Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 验证摘要和AJAX请求_Asp.net Mvc_Jquery Validate_Unobtrusive Validation - Fatal编程技术网

Asp.net mvc 验证摘要和AJAX请求

Asp.net mvc 验证摘要和AJAX请求,asp.net-mvc,jquery-validate,unobtrusive-validation,Asp.net Mvc,Jquery Validate,Unobtrusive Validation,我正在编写一个jQuery插件,它允许我们轻松地“hijax”一个标准HTML表单,通过AJAX而不是标准POST提交 插件需要处理的一件事是验证错误,在ASP.NETMVC的情况下,是服务器上的ModelState错误 我已经编写了一个操作过滤器,它拦截AJAX请求并将Modelstate错误作为JSON返回。这适用于字段错误(即表单上有输入的错误): jQuery ValidateshowErrors函数查找具有与错误键匹配的名称的输入元素 由于ASP.NET MVC中的标准约定是在您希望提

我正在编写一个jQuery插件,它允许我们轻松地“hijax”一个标准HTML表单,通过AJAX而不是标准POST提交

插件需要处理的一件事是验证错误,在ASP.NETMVC的情况下,是服务器上的ModelState错误

我已经编写了一个操作过滤器,它拦截AJAX请求并将Modelstate错误作为JSON返回。这适用于字段错误(即表单上有输入的错误):

jQuery Validate
showErrors
函数查找具有与错误键匹配的
名称的输入元素

由于ASP.NET MVC中的标准约定是在您希望提供“摘要”错误时执行以下操作:

这会导致jqueryvalidate抛出异常

迄今为止,我想出的最佳解决方案是在表单上创建隐藏的输入:

<input type="hidden" name="summary" disabled/> <!-- prevent it from being submitted -->
@Html.ValidationMessage("summary")    
这并不理想,因为它不能很好地处理多个错误。一个更好的解决方案是连接到不引人注目的验证插件如何处理摘要错误,但我不知道如何做到这一点

ModelState.AddModelError("", "Error without a key");  
<input type="hidden" name="summary" disabled/> <!-- prevent it from being submitted -->
@Html.ValidationMessage("summary")    
ModelState.AddModelError("summary", "Summary error");