【问题标题】:MVC4 Ajax forms: How to display server side validationMVC4 Ajax 表单:如何显示服务器端验证
【发布时间】:2012-08-20 13:24:54
【问题描述】:

我正在使用@Ajax.BeginForm helper 方法,它通过Ajax 向服务器提交表单数据。当数据到达服务器时,会处理一些服务器端验证并将最终结果传递回浏览器。

我的问题是,我希望在不刷新页面的情况下显示错误。基于此,我发现了很多问题,但它们已经过时了。我想知道是否有一些新方法可以实现这一目标。到目前为止我发现的最好的方法是process the result using jQuery。但也许在新的 MVC4 中有一些内置功能如何以更好的方式解决这个问题?

【问题讨论】:

  • 您可以利用 jquery 的不显眼验证。查看此链接:robdmoore.id.au/blog/2012/04/27/…
  • @JoonasL 恐怕它不能解决我的问题。正如我所说,我知道如何验证我的模型。问题在于通过 Ajax 显示来自服务器的验证消息。
  • 哦,那么当您返回显示验证失败的 ajax 结果时。然后手动显示 jquery 验证的错误消息。没有更简单的方法。有关手动触发错误,请参阅此问题:stackoverflow.com/questions/1479255/…
  • “在服务器上处理”和“由客户端立即显示”是有点矛盾的要求。
  • @anaximander 你说得对,我的表达有问题。我想说我需要在不刷新页面的情况下显示答案。

标签: asp.net asp.net-mvc-4


【解决方案1】:

您的视图应如下所示:

<div id="update-this">
@using (Ajax.BeginForm("YourAction", new AjaxOptions { UpdateTargetId = 'update-this' }))
{    
}
</div>

还可以在您的字段旁边使用@Html.ValidationMessageFor(model =&gt; model.someField) 来显示错误消息。

如果有任何错误,在服务器端返回一个局部视图:

public ActionResult YourAction(YourModel yourmodel)
{
    if (ModelState.IsValid)
    {
        // Do what is needed if the data is valid and return something
    }
    return PartialView("DisplayPartial", yourmodel);
}

并在您的模型上使用数据注释使其工作。 (教程here。)

【讨论】:

  • 我一直在谷歌上搜索死,这是迄今为止最好的答案。谢谢安德拉斯!
猜你喜欢
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 2012-02-08
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
相关资源
最近更新 更多