2009-07-15 10 views
0

Ich habe eine ASP.NET MVC-Seite, die eine Liste von Elementen hat ...Modell nicht Rendering-Modell Werte nach

//a vague representation 
Model.someValue[0]  Model.someHiddenValue[0] 
Model.someValue[1]  Model.someHiddenValue[1] 
Model.someValue[2]  Model.someHiddenValue[2] 

Alle Felder sind optional, aber sie haben einige Validierung haben, von denen ich bin Validierungsnachrichten anzeigen

Das Problem ist, wenn ich einmal sende und die ursprüngliche Ansicht anstelle einer Umleitung zurückgeben, die versteckten Felder nicht ihren neuen Wert erhalten, aber ihr neuer Wert ist in dem Ansichtsmodell an die Ansicht übergeben.

Ich denke, dass ModelState das Modell als Teil der Validierung überschreiben kann. Ich weiß, dass ich eine Umleitung machen und das Problem umgehen kann, aber ich will in der Lage sein, einen Teil des Formulars zu speichern und Validierungsfehler für den Rest anzuzeigen. Wenn es keine anderen Lösungen gibt, werde ich einfach das gesamte Formular validieren und nur speichern, wenn alle Artikel gültig sind.

Antwort

0

Haben Sie versucht, diese ?:

var newValue = new ValueProviderResult("value", "value", System.Globalization.CultureInfo.CurrentUICulture); 

ModelState.SetModelValue("someHiddenValue", newValue); 
+0

Ich habe nicht .. Ich änderte meine Validierung, um alles oder nichts zu sein ... wenn erfolgreich, speichern Sie dann redirect ... else show view, die die Validierung Nachrichten geben. –

2

Wenn Werte in Model vorhanden sind, es zeigt sie anstelle der Werte in Ihrem Modell, da sie den „letzten“ bekannten Zustand vom Benutzer zur Verfügung gestellt darstellen.

Sie sollten ModelState löschen, wenn Sie nicht beabsichtigen, dass der Benutzer seine Änderungen erneut durchführt.

+0

Danke, ich verstehe nicht ganz, wie der ModelState funktioniert, aber das gibt genügend Informationen, um es bei Bedarf zu umgehen. Vielen Dank. –

Verwandte Themen