我正在检查模型的动作有效性。存储库根据我执行的检查的方式抛出各种异常,因此该操作包含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,以便在再次显示视图时,我可以在模型中保留检查结果。
有什么想法吗?
答案 0 :(得分:8)
ModelState.Clear();
应该完成这项工作。