如何重置ModelState值?

时间:2012-01-26 07:11:30

标签: asp.net-mvc

我正在检查模型的动作有效性。存储库根据我执行的检查的方式抛出各种异常,因此该操作包含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);}

我已尝试在catch中执行Model = new Model(),但是,即使传递给视图的模型全为null,也会保留输入到表单的值。我认为这是因为ModelState ......有没有办法重置它?

我想避免执行RedirectToAction,以便在再次显示视图时,我可以在模型中保留检查结果。

有什么想法吗?

1 个答案:

答案 0 :(得分:8)

ModelState.Clear();应该完成这项工作。