Curso de MVC .Net C#, CRUD, Editar y Eliminar con Entity Framework #6

En este sexto video veremos como editar y eliminar registros por medio de Entity Framework.

Primer video del curso: https://www.youtube.com/watch?v=UZNoQMio4XM

Segundo video del curso: https://www.youtube.com/watch?v=XnyJUQqUaRk

Tercer video del curso: https://www.youtube.com/watch?v=7pZn93zHk1A

Cuarto video del curso: https://www.youtube.com/watch?v=HYIcMzRO8k0

Quinto video del curso: https://www.youtube.com/watch?v=znUDIaVDs5E

Descargar código del curso: Clic aquí

Curso de MVC .Net C#, Layout, Razor, Listas con EntityFramework #4

En este cuarto video veremos como funciona el Layout, los Bundles, y como podemos acceder a la información a través de Entity Framework y mostrarla en una vista utilizando Razor.

Primer video del curso: https://www.youtube.com/watch?v=UZNoQMio4XM

Segundo video del curso: https://www.youtube.com/watch?v=XnyJUQqUaRk

Tercer video del curso: https://www.youtube.com/watch?v=7pZn93zHk1A

¿Cómo hacer que todas las cadenas en todos los ViewModel en un proyecto en MVC .Net se les aplique Trim o ToUpper? DefaultModelBinder

Cuando se trabaja en un equipo de desarrollo que sobre pasa los 3 programadores muchas veces se debe obligar a que se realicen tareas básicas como recortar los espacios en las cadenas por medio de Trim, o quizá si existe un requerimiento del cliente de que todas las cadenas estén en mayúsculas realizar un ToUpper o por lo contrario un ToLower, bueno, cualquier función sobre algún tipo de dato en todos nuestros modelos de nuestra aplicación.

Para asegurarnos de que siempre sean ejecutadas este tipo de operaciones existe en MVC .Net algo llamado Binder o ModelBinder el cual trabaja como cubierta de la información y puede transformarla a lo que deseemos, validar o realizar una operación.

A continuación incluyo una clase la cual hará que todas las cadenas que existan en nuestros View Model se les aplique una función Trim y una función ToUpper, así evitamos ponerlas en todos los controles, haciendo que esto ya sea un proceso por defecto en toda la aplicación.


namespace Sistema.Models.Binders
{
    public class TrimToUpperBinder : DefaultModelBinder
    {

        protected override void SetProperty(ControllerContext controllerContext,
         ModelBindingContext bindingContext,
         System.ComponentModel.PropertyDescriptor propertyDescriptor, object value)
        {
             //Solo modificaremos los string, por lo cual detectamos el tipo de dato
            if (propertyDescriptor.PropertyType == typeof(string))
            {
                var stringValue = (string)value;
                if (!string.IsNullOrEmpty(stringValue))
                {
                    stringValue = stringValue.Trim(); //trimeamos
                    stringValue = stringValue.ToUpper(); //mayuscula
                }

                value = stringValue;
            }

            base.SetProperty(controllerContext, bindingContext,
                                propertyDescriptor, value);
        }
    }
}

Y para que sea ejecutado en toda la aplicación debemos inicializar nuestra clase en el archivo Global.asax en el método Application_Start() de la siguiente manera:


 protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            //Aquí remplazamos el binder por defecto con el nuestro
            ModelBinders.Binders.DefaultBinder = new Sistema.Models.Binders.TrimToUpperBinder();
        }