Domanda

Sto cercando di trovare alcuni esempi di costruzione di un modello personalizzato legante per uno scenario unico legame che ho bisogno di gestire, ma tutti gli articoli che ho trovato sono stati per le versioni precedenti di MVC, che non sono più rilevanti in MVC2. Ho riferimento al codice sorgente DefaultModelBinder per cercare di avere un'idea generale di ciò che devo fare, ma è del tutto più complicato di quanto il mio scenario e sto avendo problemi a isolare la logica specifica ho bisogno di attuare.

Il mio obiettivo è quello di prendere un insieme di coppie / TextBox caselle di verifica e per tutte le coppie Checked vorrei creare una coppia chiave / valore del valore della casella di controllo e il valore della casella di testo associato. Dopo aggregando questi dati ho bisogno di fare un po 'di serializzazione stringa sulla raccolta in modo da poter memorizzare in una proprietà di stringa del tipo di modello desiderato. Ho già i dati inviati dal modulo in un formato gestibile che mi permetterà di mettere in relazione un dato Casella di controllo per una casella di testo specifica, è solo una questione di capire come ottenere tutti i pezzi in cui ho bisogno di loro.

Qualcuno sa di alcuni tutorial up-to-date che può ottenere mi ha iniziato con la costruzione di un modello personalizzato legante?

È stato utile?

Soluzione

Non so il motivo per cui si pensa molto è cambiato da quando MVC 1 per quanto riguarda leganti modello personalizzato. Ma se ho capito ciò che si sta cercando di fare, dovrebbe essere abbastanza facile.

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
    }
}

e la vostra azione:

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

È stato che il tipo di informazioni che stai cercando?

Altri suggerimenti

Date un'occhiata a diversi esempi di raccoglitori personalizzati modello MVC sul mio blog.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top