Вопрос по asp.net-mvc – Очистить поля после успеха

15

У меня есть страница с 2 ввода тип = текст ..

@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"/>
}

в моем контроллере я делаю это:

[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);
}

так что проблема ... когда моя модель верна, я устанавливаю результат как "Успех" и в этой точке vm.TalkToUsRequest имеет значение null .. но когда страница отображается, все поля имеют одно и то же значение, что и при передаче ... даже я устанавливаю vm.TalkToUsRequest = null !! Как я могу очистить эти поля?

Ваш Ответ

2   ответа
58

если вернетесь к тому же представлению. Попробуйте следующее:

    ModelState.Clear();
    return View(vm);
}
Это поведение по умолчанию. По вашему мнению, ваши вспомогательные элементы управления MVC отображают новое значение, если оно определяет, что состояние вашей модели было изменено. Представьте себе сценарий, когда вы нажимаете кнопку «Отправить» в форме. Который ударил бы действие на контроллере. Вы сделаете некоторую проверку, и если что-то не получится, вы вернетесь к тому же виду с некоторой ошибкой. В этом случае вы хотите сохранить значения модели в такте и показать некоторые сообщения об ошибках. И если проверка проходит на контроллере, вы перенаправляете на другую страницу.
Хорошо ... но почему это происходит, если я устанавливаю NULL в TalkToUsRequest? MuriloKunze
2

Ваш ответ :

TryUpdateModel(yourmodelname);

и это обновит ваше состояние просмотра

и если вы также хотите очистить все Modelstate.error одновременно, вы можете также используйте:

 ModelState.Clear(); 

Похожие вопросы