Frage

Ich bin versucht zu finden, einige Beispiele für das erstellen einer benutzerdefinierten modelbinder für eine einzigartige Bindung Szenario, das ich brauche, um zu behandeln, aber alle die Artikel, die ich fand, waren für ältere Versionen von MVC, die nicht mehr relevant in MVC2.Ich habe die Referenzierung der DefaultModelBinder-source-code, um zu versuchen, um ein Allgemeines Gefühl für das, was ich tun muss, aber es ist durchaus komplizierter als mein Szenario und ich habe Probleme, isolieren die spezifischen Logik, die ich implementieren muss.

Mein Ziel ist es, eine Sammlung von Checkbox - /Textbox-Paare und für alle von den Paaren, die ich Geprüft möchten, erstellen Sie ein Schlüssel/Wert-paar der Wert der Checkbox und dem dazugehörigen Textfeld den Wert.Nach der Aggregation dieser Daten, die ich brauche, um einige der string-Serialisierung für die Sammlung, so kann ich speichern Sie es in eine string-Eigenschaft des gewünschten Modells geben.Ich habe bereits die gesendeten Daten aus dem Formular in einer handlichen format, die es mir ermöglichen, zu beziehen, eine bestimmte Checkbox zu einer bestimmten Textfeld, es ist nur eine Frage der herauszufinden, wie man all die Stücke, wo ich Sie brauche.

Kennt jemand einige up-to-date-tutorials, die können erhalten begann mich mit dem Aufbau einer benutzerdefinierten modelbinder?

War es hilfreich?

Lösung

Ich weiß nicht, warum Sie denken, eine Menge hat sich geändert, seit MVC 1 in Bezug auf custom-Modell Bindemittel.Aber Wenn ich verstehe, was Sie versuchen zu tun, sollte es ziemlich einfach.

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

Und der Aktion :

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

War das die Art von Informationen, die Sie suchen?

Andere Tipps

Werfen Sie einen Blick auf einige Beispiele Benutzerdefinierte MVC-Modell Bindemittel auf meinem blog.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top