ASP.NET MVC - Custom-Modell von binder in der Lage, Prozess-arrays

Brauche ich, um zu implementieren eine Funktionalität, um Benutzern zu erlauben, geben Sie Preis, in jeder form, D. H., dass 10 USD, 10$, $10,... als input.

Ich möchte dieses Problem durch die Implementierung einer benutzerdefinierten Modell-binder für die Preis Klasse.

 class Price { decimal Value; int ID; } 

Das Formular enthält ein array oder Preise als Schlüssel

keys:
"Prices[0].Value"
"Prices[0].ID"
"Prices[1].Value"
"Prices[1].ID"
...

ViewModel enthält eine Preise-Eigenschaft:

public List<Price> Prices { get; set; }

Den Standard binder Modell funktioniert gut, solange der Benutzer gibt eine Dezimalzahl konvertierbar string in die Eingabe eines Wertes.
Ich möchte zu erlauben, Eingaben wie "100 USD".

Meine ModelBinder für Preis Art so weit:

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
    Price res = new Price();
    var form = controllerContext.HttpContext.Request.Form;
    string valueInput = ["Prices[0].Value"]; //how to determine which index I am processing?
    res.Value = ParseInput(valueInput) 

    return res;
}

Wie implementiere ich eine benutzerdefinierte Modell-Bindemittel für die Verarbeitung des arrays korrekt?

  • Ich denke, richtig, die ID ist die Benutzer-ID und nicht die ID der Währung?
  • Das ist die ID der Preisgestaltung geben, die nicht relevant für diese Frage
  • Keine Notwendigkeit für mehrere Währungen - wir sind fixiert auf eine einzelne Währung, sondern müssen es erlauben, verschiedene Arten von input-Formate, wie bereits erwähnt, in der Frage
  • Schauen Sie in diesem auch: haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
InformationsquelleAutor Marek | 2010-02-28
Schreibe einen Kommentar