2015-07-08 6 views
7

Ich erlaube derzeit einer Auswahlliste, einen Anfangswert von "" zu haben. Der Benutzer kann wählen, ob er diese Option ausfüllen oder auf dem Standardwert belassen möchte.Wie ändere ich einen Wert im ModelState, so dass er gültig ist, mit ASP.NET MVC?

Diese SelectList funktioniert mit einer ID, wo die ID an meinen Controller übergeben wird. Da jedoch kein int ausgewählt wird, führt der ModelState zu False, da die Eingabe eine leere Zeichenfolge und kein int war.

Ich möchte den Wert dieser leeren Zeichenfolge auf 0 ändern. Dies würde dazu führen, dass ModelState True ist. Ich habe mir die ModelState-Dictionary-Klasse angesehen, damit ich das Schlüssel-Wert-Paar ändern kann, bevor ModelState überprüft wird. Dies konnte ich jedoch nicht erfolgreich anwenden.
https://msdn.microsoft.com/en-us/library/system.web.mvc.modelstatedictionary(v=vs.118).aspx

Jede Hilfe würde sehr geschätzt werden.

+0

können Sie nicht den int-Eigenschaft auf NULL festlegbare wie 'public int machen?' – JamieD77

+0

Sie mit Modell Binder spielen können, können Sie Standardwert für diesen Satz Eigenschaft, können Sie ein Paar von Werten mit '" "- 0" Paar zur Sammlung hinzufügen, bevor Sie die Ansicht usw. erstellen Frage ist, wie Sie die Ansicht erstellen und wie Datenmodell weitergegeben dort aussieht? – mwilczynski

Antwort

4

Sie könnten nur den Fehler entfernen

if (ModelState.ContainsKey("{key}")) 
    ModelState["{key}"].Errors.Clear(); 

if (ModelState.IsValid) 
{ 
} 
+1

Danke, das war sehr nützlich, nachdem Sie den Wert geändert haben. Wie ich festgestellt habe, wenn der Wert geändert wird, bleibt der zugehörige Fehler weiterhin bestehen. :) – Louise

Verwandte Themen