Mostrando entradas con la etiqueta DataBinding. Mostrar todas las entradas
Mostrando entradas con la etiqueta DataBinding. Mostrar todas las entradas

jueves, 28 de julio de 2016

ASP.NET MVC. ModelBinderProvider para Tipos Genéricos (y II). KeyValuePair Data Binding

Descargar código de ejemplo
Códigos de muestra - Ejemplos MSDN. ModelBinderProvider para tipos genéricos

Artículos anteriores:
ASP.NET MVC. ModelBinderProvider para Tipos Genéricos (I). Creando el escenario

En el artículo anterior vimos cómo MVC no es capaz de realizar de forma automática el enlace de datos para elementos de tipo KeyValuePair.

ASP.NET MVC trata de utilizar el ModelBinder configurado por defecto, el DefaultModelBinder, para realizar el enlace de datos. La forma de actuar con tipos complejos es siempre la misma: intenta crear una instancia del elemento buscando e invocando un constructor sin argumentos y, a continuación, trata de asignar valores a cada una de sus propiedades.

En el caso de KeyValuePair el tipo sí que tiene un constructor sin argumentos por lo que el DefaultModelBinder será capaz de crear la instancia del elemento, sin embargo las propiedades Key y Value son de sólo lectura, por lo que no será capaz de asignar los valores a las propiedades.

En este artículo veremos cómo realizar el enlace de datos para este tipo de datos.

lunes, 25 de julio de 2016

ASP.NET MVC. ModelBinderProvider para Tipos Genéricos (I). Creando el escenario

Descargar código de ejemplo
Códigos de muestra - Ejemplos MSDN. ModelBinderProvider para tipos genéricos

En un post anterior mostré cómo podíamos crear y registrar un ModelBinder personalizado en una aplicación MVC (ASP.NET MVC. Crear un ModelBinder personalizado). Sin embargo, el tipo de datos que indicamos a MVC a la hora de registrar el ModelBinder debe ser un tipo de datos específico, no podemos indicar un tipo genérico.

Entonces, ¿cómo podemos crear un ModelBinder para un tipo de datos genérico que ASP.NET MVC no es capaz de enlazar por defecto?

Por suerte ASP.NET MVC nos permite también la opción de registrar proveedores de ModelBinders o ModelBinderProviders los cuales se encargan de crear las instancias de ModelBinders para ciertos tipos de datos.

En este artículo mostraré cómo crear y registrar un ModelBinderProvider para el tipo genérico KeyValuePair<TKey, TValue>. Veremos porqué ASP.NET MVC no es capaz de enlazarlo por defecto, cómo crear el ModelBinder para el tipo y cómo podemos indicarle a MVC que debe utilizar nuestro ModelBinder para enlazar estos tipos de datos utilizando un ModelBinderProvider.

lunes, 23 de mayo de 2016

ASP.NET MVC. Crear un ModelBinder personalizado.

Una de las herramientas más útiles de las que disponemos en ASP.NET MVC es el data binding o enlace de datos, que se encarga de transformar de manera automática los datos recibidos del navegador a los tipos de datos usados en los argumentos de las acciones de nuestros controladores.

Sin embargo el proceso de binding que realiza por defecto MVC se nos puede quedar corto cuando utilizamos tipos de datos complejos.

En este artículo voy a mostrar cómo podemos indicarle a MVC cómo debe realizar el enlace de datos con un tipo de datos predeterminado a través de la implementación de un ModelBinder.

El código completo tanto en C# como en Visual Basic .NET está disponible en:

Códigos de muestra - Ejemplos MSDN. Crear un Model Binder personalizado