what the purpose net mvc data attribute asp asp.net-mvc asp.net-mvc-2 modelbinders custom-model-binder

the - ASP.NET MVC2-Ejemplos de carpetas de modelos personalizados



data binding mvc (2)

Echa un vistazo a varios ejemplos de carpetas de modelos MVC personalizados en mi blog.

Estoy tratando de encontrar algunos ejemplos de cómo crear una carpeta de modelos personalizada para un escenario de enlace único que debo manejar, pero todos los artículos que encontré fueron para versiones anteriores de MVC que ya no son relevantes en MVC2. He estado haciendo referencia al código fuente de DefaultModelBinder para intentar tener una idea general de lo que debo hacer, pero es mucho más complicado que mi escenario y tengo problemas para aislar la lógica específica que necesito implementar.

Mi objetivo es tomar una colección de pares Checkbox / Textbox y para todos los pares Checked me gustaría crear un par clave / valor del valor de la casilla de verificación y el valor de la caja de texto asociada. Después de agregar estos datos, necesito hacer una serie de serialización de cadenas en la colección para poder almacenarlos en una propiedad de cadena del tipo de modelo deseado. Ya que los datos se envían desde el formulario en un formato manejable que me permitirá relacionar una casilla de verificación determinada con un cuadro de texto específico, solo es cuestión de averiguar cómo conseguir todas las piezas donde las necesito.

¿Alguien sabe de algunos tutoriales actualizados que pueden ayudarme a comenzar a crear una carpeta de modelos personalizada?


No sé por qué cree que ha cambiado mucho desde MVC 1 con respecto a los modelos de carpetas personalizados. Pero si entiendo lo que estás tratando de hacer, debería ser bastante fácil.

public class CustomModelBinder : DefaultModelBinder { public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { NameValueCollection form = controllerContext.HttpContext.Request.Form; //get what you need from the form collection //creata your model SomeModel myModel = new SomeMode(); myModel.Property = "value"; //or add some model errors if you need to ModelStateDictionary mState = bindingContext.ModelState; mState.Add("Property", new ModelState { }); mState.AddModelError("Property", "There''s an error."); return myModel; //return your model } }

Y tu acción:

public ActionResult Contact([ModelBinder(typeof(CustomModelBinder))]SomeModel m){ //... }

¿Era ese el tipo de información que está buscando?