Ich muss eine Funktionalität implementieren, um Benutzern die Eingabe von Preis in beliebiger Form, d. H. 10 USD, 10 $, $ 10, ... als Eingabe zu ermöglichen.ASP.NET MVC - Benutzerdefinierte Modell-Binder in der Lage, Arrays zu verarbeiten
Ich möchte dies lösen, indem Sie ein benutzerdefiniertes Modell Binder für Preisklasse implementieren.
class Price { decimal Value; int ID; }
Das Formular enthält einen Array oder Preise als Schlüssel
keys:
"Prices[0].Value"
"Prices[0].ID"
"Prices[1].Value"
"Prices[1].ID"
...
Das Ansichtsmodell enthält eine Preis Eigenschaft:
public List<Price> Prices { get; set; }
Das Bindemittel Standardmodell gut, so lange arbeitet, wie der Benutzer ein eintritt dezimal konvertierbare Zeichenfolge in die Eingabe Wert. Ich möchte Eingaben wie "100 USD" erlauben. so weit
Meine Modelbinder für Preistyp:
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 ein benutzerdefiniertes Modell Binder, der die Arrays korrekt behandelt?
Sie glaube, ich richtig, dass ID ist die Benutzer-ID und nicht die ID Die Währung? – AxelEckenberger
Das ist die ID des Preistyps, nicht relevant für diese Frage – Marek
Keine Notwendigkeit für mehrere Währungen - wir sind auf eine einzige Währung fixiert, müssen aber verschiedene Arten von Eingabeformaten wie in der Frage – Marek