4 Stimmen

MVC - Wie man den Wert eines Textfeldes in einem Beitrag ändern?

Nachdem ein Benutzer auf die Schaltfläche "Absenden" auf meiner Seite geklickt hat, gibt es ein Textfeld, das überprüft wird, und wenn es ungültig ist, zeige ich eine Fehlermeldung mit der ModelState.AddModelError Methode. Und ich muss den Wert dieses Textfeldes ersetzen und dem Benutzer die Seite mit den Fehlermeldungen zurückgeben.

Das Problem ist, dass ich den Wert des Textfeldes nicht ändern kann, ich versuche zu tun ViewData["textbox"] = "new value"; aber es wird ignoriert...

Wie kann ich das tun?

danke

6voto

Jeferson Tenorio Punkte 1764

Sie können ModelState.Remove(nameOfProperty) wie folgt verwenden:

ModelState.Remove("CustomerId");
model.CustomerId = 123;
return View(model);

Das wird funktionieren.

5voto

Gideon Punkte 17661

Ich kannte die Antwort auch nicht, habe mich in der ModelState Objekt und gefunden:

ModelState.SetModelValue()

Mein Modell hat eine Name-Eigenschaft, die ich prüfe, wenn sie ungültig ist, geschieht dies:

ModelState.AddModelError("Name", "Name is required.");
ModelState.SetModelValue("Name", new ValueProviderResult("Some string",string.Empty,new CultureInfo("en-US")));

Das hat bei mir funktioniert.

0 Stimmen

@Paulo Sie sollten Gidons Antwort akzeptieren, wenn seine Lösung funktioniert.

1voto

Paul Hicks Punkte 11

Ich habe eine Situation, wo ich einen verborgenen Wert zwischen POSTs an den Controller persistieren möchte. Der ausgeblendete Wert wird geändert, wenn andere Werte geändert werden. Ich konnte nicht bekommen das ausgeblendete Element zu aktualisieren, ohne den Wert manuell in ModelState zu aktualisieren.

Ich mochte diesen Ansatz nicht, da es sich seltsam anfühlte, keinen stark typisierten Verweis auf den Modellwert zu verwenden.

Ich fand, dass der Anruf ModelState.Clear direkt vor der Rückgabe des Ergebnisses von View hat bei mir funktioniert. Es schien dann den Wert aus dem Modell zu holen und nicht die Werte, die im vorherigen POST übermittelt wurden.

Ich denke, es wird wahrscheinlich ein Problem mit diesem Ansatz für Situationen, in denen mit Errors innerhalb der ModelState, aber mein Szenario nicht verwenden Model Errors.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X