2010-08-30 77 views
0

在对重复问题进行投票或关闭之前,我想明确说明我已阅读本网站和其他人的旧帖子。问题是他们旧的(至少有一些),并没有给出真正的好例子。使用Ajax窗体和ASP.Net处理服务器端验证MVC

我目前使用ASP.Net MVC 2.0与Ajax.BeginFormjQuery 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(支持远程服务器验证)
  • RenderPartialid='result'将整个表格。
  • 返回一些JSON使用结果和错误的消息

但有实在不是一个更好的解决方案(也许在ASP.Net MVC 3.0)? xVal仍然是一个很好的解决方案(不是很多开发正在进行)?

如果我使用JSON解决方案,是否有jQuery方法将错误分配给模拟100%客户端验证的特定元素?

如果有更好的解决方案,我准备切换我使用的技术。

谢谢,Lasse Espeholt

+0

自MVC 2发布以来,我不认为客户端验证发生了任何“新”事件,因此我不确定您寻找哪种新信息。 – jfar 2010-08-30 14:10:06

+0

@jfar xVal是为1.0制作的,但这仍然是一个不错的选择?我看到它的最新更新是1年前。我正在寻求推荐我应该使用哪种解决方案(或其他解决方案)。 – 2010-08-30 14:29:43

回答

2

xVal很好!我用它与2个asp.net mvc 2项目,它奇妙地工作。

+0

如果没有启用javascript,它可以回退吗?而且,我需要检查字段是否需要进行一些计算。据我了解,它会在实际进行表单提交调用之前探测一些服务器端验证,这是正确的吗?那么是否可以缓存验证时计算出的结果,以便在调用实际提交时使用它? – 2010-08-30 14:48:29

+0

xVal确实支持需要到服务器进行检查的验证。查看远程验证功能。不确定缓存。 – Patricia 2010-08-30 15:17:08

相关问题