确定MVC3服务器验证是否成功

时间:2012-04-26 12:34:36

标签: ajax asp.net-mvc-3 jquery

从AJAX查询返回时,有没有办法确定服务器端验证是否添加了任何错误?

我试过了

if ($('#MyForm').valid() == true)
...

OnSuccess函数中,但无论服务器端验证是否失败,似乎总是如此。如果生成的刷新HTML确实按预期放入了错误,所以我知道验证工作正常。

我怀疑valid()方法只是重新运行客户端验证。

2 个答案:

答案 0 :(得分:2)

如果对服务器运行ajax调用,则可以简单地编写Json返回。

通常我将我的回复包装在一个包含一个属性的类中,该属性告诉我一切是否正常, 一个包含数据,另一个包含最终错误消息。

public class MyJsonReposnse
{
   public bool Valid {get;set;}
   public string Error {get;set;}
   public IList<MyClass> Data {get;set;}
}

然后从您的控制器返回json,并从jQuery调用的onSuccess中检查Valid的值并相应地执行

答案 1 :(得分:1)

查看this tutorial中的技巧。使用数据注释在服务器端完成验证。使用自定义过滤器,验证错误将发送到客户端,在客户端,您从unbotrusive js中调用revalidate()

$.validator.unobtrusive.revalidate(form, validationResult);