Pregunta

Estoy tratando de encontrar algunos ejemplos de la construcción de un ligante modelo personalizado para un escenario de unión único que necesito mango, pero todos los artículos que he encontrado fuera por las versiones anteriores de MVC, que ya no son relevantes en MVC2. He estado haciendo referencia al código fuente DefaultModelBinder para tratar de obtener una idea general de lo que tengo que hacer, pero es del todo más complicado que mi escenario y estoy teniendo problemas para aislar la lógica específica que necesito para poner en práctica.

Mi objetivo es tomar una colección de pares / Casilla de texto y para todos los pares de cuadros me gustaría crear un par clave / valor del valor de la casilla de verificación y el valor del cuadro de texto asociado. Después de la agregación de estos datos que necesito para hacer un poco de serialización cadena en la colección para que pueda almacenarla en una propiedad de cadena del tipo de modelo deseado. Ya que los datos sean enviados desde el formulario en un formato manejable que me permitirá relacionar una determinada casilla de verificación para un determinado cuadro de texto, es sólo una cuestión de encontrar la manera de obtener todas las piezas donde los necesito.

¿Alguien sabe de algunos tutoriales en marcha hasta la fecha que se me empezó con la construcción de un ligante modelo personalizado?

¿Fue útil?

Solución

No sé por qué cree que muchas cosas han cambiado desde MVC 1 con respecto a los aglutinantes modelo personalizado. Pero si entiendo lo que usted está 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 su acción:

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

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

Otros consejos

Tome un vistazo a varios ejemplos de carpetas de encargo MVC modelo en mi blog.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top