28 Stimmen

Felder nach Erfolg löschen

Ich habe eine Seite mit 2 input type=text..

@model MVC3.ViewModel.TalkToUsVM

@using (Html.BeginForm())
{
    <ul>
        <li>@Html.TextBoxFor(m => m.TalkToUsRequest.Name)</li>
        <li>@Html.TextBoxFor(m => m.TalkToUsRequest.Email)</li>
    </ul>

    <input type="submit" value="Save"/>
}

In meinem Controller mache ich das:

[HttpPost]
public ActionResult Create(TalkToUsRequest talkToUsRequest)
{
    var vm = new TalkToUsVM();

    if (TryValidateModel(talkToUsRequest))
    {
        vm.Result = "Success";

        return View("Create",vm);
    }

    vm = new TalkToUsVM
    {
        Result = "Errrooooooor",
        TalkToUsRequest = talkToUsRequest
    };

    return View(vm);
}

so das Problem.. wenn mein Modell gültig ist, setze ich das Ergebnis auf "Erfolg" und in diesem Punkt vm.TalkToUsRequest ist null.. aber wenn Seite gerendert wird, sind alle Felder mit dem gleichen Wert, dass wenn ich eingereicht.. auch ich Einstellung vm.TalkToUsRequest = null! Wie kann ich diese Felder löschen?

82voto

Lav Punkte 1800

In diesem Szenario müssen Sie also Ihren Modellstatus löschen, wenn Sie zur gleichen Ansicht zurückkehren. Versuchen Sie Folgendes:

    ModelState.Clear();
    return View(vm);
}

3voto

abhijeet abanave Punkte 133

Ihre Antwort :

TryUpdateModel(yourmodelname);

und aktualisiert den Status Ihrer Ansicht

und wenn Sie auch alle Modelstate.error gleichzeitig löschen wollen, können Sie auch verwenden:

 ModelState.Clear();

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