MVC 4远程验证失败

时间:2013-02-03 11:28:51

标签: jquery asp.net-mvc jquery-validate unobtrusive-validation

我正在尝试实施远程验证,但未能调用操作方法:

当我在Firebug中测试并且在页面上出现错误时应该验证其中一个字段。这很可能是远程验证无法工作的根本原因。

_LayoutView中的我的脚本

  <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js"></script>

这是错误错误:

Syntax error, unrecognized expression: :input[name=UserReg.Password]
http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.0.min.js Line 2

我尝试过jQuery 1.8.0,错误仍然存​​在。

UserReg.Password是View

的一部分
   @Html.EditorFor(model => model.UserReg.Password)

这是该字段的呈现页面源:

     <input class="text-box single-line password" data-val="true" data-val-length="The Password must be at least 6 characters long." data-val-length-max="100" data-val-length-min="6" data-val-required="The Password field is required." id="UserReg_Password" name="UserReg.Password" type="password" value="" />

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

jQuery Validate插件要求在验证规则中声明时,将包含任何特殊字符“输入点”的输入名称括在引号中。

请参阅:docs.jquery.com/Plugins/Validation/…

  

名称复杂的字段(括号,点)

     

“如果您的表单包含使用不合法名称的字段   JavaScript标识符,您必须在使用时引用这些名称   规则选项:“

$(document).ready(function(){
    $('#myform').validate({
        rules: {
            "UserReg.Password": {
                // whatever your rules,
                // required: true
            }
        }
    });
});

如果您不能这样做,请尝试将此input切换为没有任何特殊字符的名称。


旁注:您正在使用jQuery Validate v1.9.0。但是,即使最新版本的插件v1.10.0也未经过测试,无法使用jQuery 1.9.0。如果你想保留jQuery 1.9.0,你必须使用Github的“预发布”Validate plugin version 1.11.0pre

答案 1 :(得分:0)

我从_LayoutView

中删除了此脚本
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>

问题消失了。客户端验证仍然有效。