在否决投票或结束重复的问题之前,我想澄清一下,我已经阅读了这个网站和其他网站上的旧帖子。问题是他们
老的(至少有一些)并没有给出很好的例子。
我目前使用ASP.NetMVC 2.0和
Ajax.BeginForm
jQuery Validation
客户端验证,两者都可以很好地工作。但是我希望服务器端验证错误像客户端错误一样显示(不一定是远程的)。服务器端错误当前应用于
ModelState.AddModelError
.
我使用的代码扩展如下:
<% Html.EnableClientValidation(); %>
using (Ajax.BeginForm("Bar", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "result"})) { %>
<fieldset>
<p>
<%: Html.TextAreaFor(model => model.Foo) %>
<%: Html.ValidationMessageFor(model => model.Foo) %>
</p>
<p>
<input type="submit"/>
</p>
</fieldset>
如前所述,我用
ModelState.AddModelError
. 目前,我返回一个错误的验证摘要(它不绑定到导致错误的元素),否则返回结果。
到目前为止,我遇到了解决这个问题的多种方法:
-
xVal(支持远程服务器验证)
-
将整个窗体设置为
RenderPartial
和
id='result'
.
-
但真的没有更好的解决办法吗(也许是ASP.NetMVC 3.0版)?xVal仍然是一个很好的解决方案吗(没有太多的开发正在进行)?
如果我使用JSON解决方案,是否有jQuery方法将错误分配给特定元素,从而模拟100%的客户端验证?
如果有更好的解决方案,我准备转换我使用的技术。