【发布时间】:2010-08-30 13:07:41
【问题描述】:
在否决或关闭重复问题之前,我想明确表示我已阅读本网站和其他网站上的旧帖子。问题是他们老了(至少有一些)并且没有给出很好的例子。
我目前使用带有Ajax.BeginForm 和jQuery Validation 客户端验证的ASP.Net MVC 2.0,它们都可以正常工作。但我希望服务器端验证错误像客户端错误一样显示(不一定是远程错误)。服务器端错误当前应用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'。 - 返回一些带有结果和错误消息的 JSON
但是真的没有更好的解决方案吗(也许在 ASP.Net MVC 3.0 中)? xVal 仍然是一个好的解决方案吗(没有进行大量开发)?
如果我使用 JSON 解决方案,是否有一种 jQuery 方式将错误分配给特定元素,从而 100% 模拟客户端验证?
如果有更好的解决方案,我准备转换我使用的技术。
谢谢,Lasse Espeholt
【问题讨论】:
-
我认为自 MVC 2 发布以来客户端验证没有发生任何“新”,所以我不确定您在寻找什么样的新信息。
-
@jfar xVal 是为 1.0 制作的,但这仍然是一个不错的选择吗?我看到它的最后一次更新是 1 年前。我正在寻找关于我应该使用这三种解决方案(或其他解决方案)的建议。
标签: jquery asp.net-mvc ajax asp.net-mvc-2 jquery-validate