viernes, 11 de octubre de 2013

CARGAR COMBOBOX EN VISTA MVC CON DATOS DE SOAP SERVICE

Aquí les dejo como cargar un combobox en MVC, trayendo todos los datos de una tabla usando servicio SOAP. También les dire como poder hacer que el combobox a pintar tenga un valor seleccionado que no sea el default.

Bien, ahora vayamos a lo nuestro. Asumiendo que se tiene un SOAP Service funcionando y con un método que se llame (para el ejemplo) ListarMarca().

 
Entonces en el controller de la vista del MVC, vamos a invocar este método del SOAP para que traiga la Lista de Marcas y pueda ser utilizada para la creacion de un combobox.
 
Primero, vayamos colocamos la referencia en el proyecto MVC para llavar al servicio SOAP Service. El como se hace dicha referencia, bueno, es tema de otro post, asi que asumiré que lo saben.
 
 
En el controller se tendría este código.
 
 
Como pueden apreciar, el objeto a inicializar SelectList() se le pasa 4 parámetros: el primer es el array de datos (MarcaList) , el segudo es el nombre de los valores que tomara cada option del comobox, el tercero es el nombre de la descripción de los valores que tomara (es lo que se vera al seleccionar), y el cuarto valor es justamente el valor que se desea poner como default manualmente.
 
Todo el objeto SelectList, será enviado mediante un ViewData[], poniendo entre corchetes el nombre con el cual se conocera a este componente dentro del MVC y la vista.
 
Una ves llevado a la vista.aspx, se podrá llamar este ViewData[] y poder pintar con ella un combobox.
 
 
Como se aprecia, el recurso HTML a usar será un DropDownList y se le pasara 3 parámetros: el primero es el nombre que tiene el DropDownList en la vista, el segundo es el ViewData trayendo todos los datos acumulados en el Controller, y el tercero es opcional para poder pintar el primer valor que contendrá el valor vacio.
 
NOTA: Tener en cuenta que el nombre del VIEWDATA y el nombre que tendrá este DROPDOWNLIST deben ser DIFERENTES, si son iguales el combobox se mostrará pero ignorará la selección manual que hicimos anteriormente en el controller y mostrara el primer valor por defecto.
 
Aquí esta el código HTML que se genera una ves probado nuestro proyecto.
 
 
Espero les sirva.


miércoles, 9 de octubre de 2013

System.ServiceModel.FaultException`1 was unhandled by user code

Al momento de realizar un proyecto con SOAP Service y cliente MVC es posible que cuando lancen y capturen una Excepcion desde el SOAP Service. Ocurra un error al momento de ejecutar y probar dicho error en el MVC.

A pesar de estar la codificación correcta y los servicios corriendo, saldrá este error que posiblemente saque mas a uno de sus casillas. (como fue conmigo)


Bueno, aquí les dejo como poder resolver este error, que en si no es un problema con el proyecto ni un ";" que falte o algún objeto sin inicializar correctamente.

El problema radica en el mismo VS que se esta usando para la creación y ejecución de nuestro proyecto. Ya que por defecto, detiene su ejecución a cada excepción que encuentra con ningún mensaje lógico de error.

Para evitar que esto pase a cada momento y así nuestra excepción definida pueda ser lanzada y capturada eficientemente por el VS, debemos de DESELECCIONAR estas opciones.

En el ménu TOOLS->OPTION, saldrá una ventana, damos click a DEBUGGING y luego a GENERAL y dentro buscamos las siguientes opciones para deseleccionarlas.




Con esto se habrá arreglado ese error. Y todo ira perfecto.
Espero que les ayude con su proyecto.

martes, 1 de octubre de 2013

Error de maxReceivedMessageSize en MVC con BD

Al momento de realizar un proyecto MVC con SOAP Services y conexión a BBDD. Algunas veces puede salir el siguiente error:


Este error sucede cuando la cantidad de datos a traer de una base de datos sobrepasa la cuota máxima establecida (por default) en el servicio MVC creado.

Esta cuota esta seteada en el archivo Web.config del MVC.
 
 
 
En el archivo .XML buscamos los siguientes datos:
 
 
 
Para corregir este error y lograr que se traigan grandes cantidades de datos (Aunque esto en la práctica no es recomendable, ya que puede ocasionar tráfico innecesario y tramas incompletas) es necesario editar los dos atributos:
 
maxBufferSize y maxReceivedMessageSize
 
Dandole el valor que se necesite: Ejm. 10 MB = 10 * 1024 * 1024
 
 
 
 
Espero les haya servido el post. Comenten y denle LIKE.