Как сбросить значения ModelState? - PullRequest
3 голосов
/ 26 января 2012

Я проверяю модель на действительность в действии.Хранилище генерирует различные исключения в зависимости от того, как проходят проверки, поэтому действие содержит инструкцию try-catch.

[AcceptVerb(HttpVerbs.Post)]
public ActionResult MyAction1(Action1Model Model)
{
    if (ModelState.IsValid)
        try
        {
             new MyModelRepository().CarryOutSomeChecks(Model);
             return View("SuccessfulView")
        }
        catch (ValidationException)
        {
             Model.Result = Result.Fail;
             ModelState.... <= I would like to reset the ModelState here.
        }
    return View(Model)
}

Модель представления содержит некоторую конфиденциальную информацию, поэтому, если проверки не пройдены, я бы хотелвернуться к представлению и удалить значения, которые были введены пользователем.

Чтобы усложнить то, что на мой взгляд, я называю, на самом деле в нем есть два частичных представления, каждый из которых показывает форму, например:

@model MyProject.MyOverallViewModel
@{
}

@{Html.RenderPartial("MyAction1Form", Model.Action1ModelInstance);}
@{Html.RenderPartial("MyAction2Form", Model.Action2ModelInstance);}

Я попытался выполнить Model = new Model () в перехвате, но, хотя модель, передаваемая в представление, является нулевой, значения, введенные в форму, сохраняются.Я предполагаю, что это из-за ModelState ... Есть ли способ сбросить это?

Я хотел бы избежать выполнения RedirectToAction, чтобы я мог сохранить результат своей проверки в моей модели при отображении представленияснова.

Есть идеи?

1 Ответ

8 голосов
/ 26 января 2012

ModelState.Clear(); должен сделать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...