【问题标题】:How to clear form after submit when validation fails but still display error message MVC验证失败时如何在提交后清除表单但仍显示错误消息 MVC
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这样的:

    return View(new ContactFormViewModel());
    

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

    【讨论】:

    • 实际上,正如斯蒂芬指出的那样,这不起作用,因为状态仍然无效
    猜你喜欢
    • 1970-01-01
    • 2012-04-08
    • 2017-11-08
    • 1970-01-01
    • 2015-04-17
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多