如何在验证失败后提交后清除表单但仍显示错误消息MVC

时间:2018-04-11 07:17:14

标签: asp.net asp.net-mvc contact-form

我正在尝试使用联系表单(MVC),如果验证失败,将重新加载View。这样可行。但是,如果您返回页面并更正错误,则提交时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);
    }            
}

例如,在我的模型中,我在Message字段上有一个带有错误消息的正则表达式。如果我第一次输入不允许的内容,ModelState为false并返回View(正确)。但是,回到表单并更正问题,ModelState现在应该是true但它仍然是false

如果我这样做

else
{
    ModelState.Clear()
    return View(model);
}

然后页面重新加载,没有错误消息。这不太理想。

如何获取它以便显示错误消息,然后清除modelState。

我尝试ContactFormViewModel cmModel = new ContactFormViewModel(),但结果相同。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

return View(new ContactFormViewModel());

创建一个新对象并将其传递给视图。

答案 1 :(得分:0)

调试后,我发现ModelState.IsValid正确显示为无效,因为实际上,我在inputMessage中输入的字符串不满足正则表达式。 答案完全与模型无关。