【发布时间】:2018-09-20 23:15:18
【问题描述】:
我正在尝试创建一个联系表单 (MVC),如果未通过验证,它将重新加载视图。这样可行。但是,如果您返回页面并更正错误,则 ModelState 在提交时仍然为 false,因此它只是重新加载页面。
我尝试在返回之前执行ModelState.Clear,但这会清除错误。我需要一种方法来显示错误,然后清除模型,但是返回后我当然不能使用该方法。
我的代码如下:
public ActionResult Index(ContactFormViewModel model, string inputFirstName, string inputLastName, string inputEmail, string inputMessage)
{
if (ModelState.IsValid)
{
return View("Success");
}
//reload page and show validation errors
else
{
return View(model);
}
}
例如,在我的模型中,我在消息字段上有一个带有错误消息的正则表达式。如果我首先输入不允许的内容,ModelState 为 false 并返回 View(正确)。但是,回到表格并纠正问题,ModelState 现在应该是 true 但它仍然是 false。
如果我这样做了
else
{
ModelState.Clear()
return View(model);
}
然后页面重新加载,没有错误消息。这并不理想。
如何获取,以便显示错误信息,然后清除modelState。
我尝试了ContactFormViewModel cmModel = new ContactFormViewModel(),但结果相同。
【问题讨论】:
-
这只是意味着你有另一个
ModelState错误。检查ModelState的值以查看所有错误。如果出现验证错误,为什么不使用客户端验证来防止提交? -
我愿意,我只是为了这个问题删除了很多代码
-
返回视图怎么样(new ContactFormViewModel());
-
@PraneetNadkar,这不会改变
ModelState。 -
目前的问题无法回答
标签: asp.net asp.net-mvc contact-form