问题描述
||
尝试使用此解决方案通过jQuery验证来验证AjaxForm ASP.Net MVC Ajax表单,但出现错误:
Uncaught exception: TypeError: Cannot convert \'$(\'MyFrom\').validate()\' to object
我来自:
@using (Ajax.BeginForm(\"MyFromAction\",\"Something\",null,new AjaxOptions() { OnBegin = \"onBeginMyFrom\",OnFailure = \"onFailureMyFrom\",OnSuccess = \"onSuccessMyFrom\" },new { @id = \"MyFrom\" }))
{
}
我的表单正常工作并发布到服务器,但是在我使用jQuery验证后,出现上述错误。
有任何想法吗?
更新:
我没有提到我正在使用MVCContrib FluentHtml。
MVCContrib需要此http://weblogs.asp.net/srkirkland/archive/2011/03/08/adding-unobtrusive-validation-to-mvccontrib-fluent-html.aspx才能进行Unobtrusive验证工作。
默认情况下,MvcContrib是否在下一版本中支持不干扰验证?
解决方法
您正在寻找的答案与ASP.NET MVC的早期版本有关。在ASP.NET MVC 3中,客户端验证是使用jquery validate插件执行的,并且不会引起干扰。您不需要任何代码。因此,第一件事是确保您包括正确的脚本:
<script src=\"@Url.Content(\"~/Scripts/jquery.validate.js\")\" type=\"text/javascript\"></script>
<script src=\"@Url.Content(\"~/Scripts/jquery.validate.unobtrusive.js\")\" type=\"text/javascript\"></script>
<script src=\"@Url.Content(\"~/Scripts/jquery.unobtrusive-ajax.js\")\" type=\"text/javascript\"></script>
然后在web.config中启用不引人注意的javascript和验证:
<add key=\"ClientValidationEnabled\" value=\"true\"/>
<add key=\"UnobtrusiveJavaScriptEnabled\" value=\"true\"/>
现在,您可以使AJAX表单正常运行:
@using (Ajax.BeginForm(\"MyFromAction\",\"Competition\",null,new AjaxOptions() { OnBegin = \"onBeginMyFrom\",OnFailure = \"onFailureMyFrom\",OnSuccess = \"onSuccessMyFrom\" },new { @id = \"MyFrom\" }))
{
...
}
该表格将在客户端检查验证错误,并且只有在纠正错误后才会提交。