如何重置ModelState值?
问题描述:
我正在检查动作中的有效性模型。取决于我执行的检查的方式,存储库会抛出各种异常,因此该操作包含try-catch语句。如何重置ModelState值?
[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,但即使传递给视图的模型全为空,输入到表单的值也会保留。我认为这是因为ModelState ...有没有办法重置它?
我想避免做一个RedirectToAction,这样我可以保持我的检查结果在我的模型中,当视图再次显示时。
任何想法?
答
ModelState.Clear();
应该完成这项工作。
是的,你是对的,它的确如此。奇怪的是,我在大约半小时前尝试过,价值观被坚持......必须越来越累。谢谢! –
只是为了澄清,ModelState.Clear()的作品,但只有当我然后通过模型并重置所有属性。有趣的是,现在有意义地考虑它...... –
@ user643192,而不是通过你的模型并逐个重置它的属性,你可以简单地在重置模型状态之后返回View(new Action1Model()); –