Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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
jquery.validate.unobtrusive.js在表单提交时始终返回false,因此表单不会将数据发布到服务器端_Jquery_Asp.net Mvc 5_Jquery Validate_Unobtrusive Validation - Fatal编程技术网

jquery.validate.unobtrusive.js在表单提交时始终返回false,因此表单不会将数据发布到服务器端

jquery.validate.unobtrusive.js在表单提交时始终返回false,因此表单不会将数据发布到服务器端,jquery,asp.net-mvc-5,jquery-validate,unobtrusive-validation,Jquery,Asp.net Mvc 5,Jquery Validate,Unobtrusive Validation,我正在使用MVC5,在该项目中,我有一个用于更改密码的表单,该表单使用viewmodel的数据注释属性来验证字段。为此,我将jquery.validate.js与jquery.validate.unobtrusive.js一起使用。下面是代码。所以我的问题是为什么它$('form')。valid()在表单提交时总是返回false? 在web.config中,一切似乎都正常,这在整个应用程序的所有表单中都会发生 <add key="ClientValidationEnabled" value

我正在使用MVC5,在该项目中,我有一个用于更改密码的表单,该表单使用viewmodel的数据注释属性来验证字段。为此,我将jquery.validate.js与jquery.validate.unobtrusive.js一起使用。下面是代码。所以我的问题是为什么它$('form')。valid()在表单提交时总是返回false? 在web.config中,一切似乎都正常,这在整个应用程序的所有表单中都会发生

<add key="ClientValidationEnabled" value="true" />
    <!-- UnobtrusiveJavaScriptEnabled - Enable client side JavaScript validation using jQuery Validate. -->
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />    

public class MyPasswordViewModel
    {
        [Display(Name = "New Password:")]
        [Required(ErrorMessage = "New password is required.")]
        public string NewPassword { get; set; }

        [Display(Name = "Confirm Password:")]
        [Required(ErrorMessage = "Confirm password is required.")]
        [Compare("NewPassword",ErrorMessage = "Both the password Fields should be same.")]
        public string ConfirmPassword { get; set; }

        public int TabId { get; set; }

        public string Email { get; set; }
        public bool IsSuccess { get; set; }
        public string ErrorMessage { get; set; }
    }

问题在于验证的版本不引人注目。我以前使用的是(jQuery.Validation.Unobtrusive.2.0.20710.0)jQuery,但现在我使用的是Microsoft.jQuery.Unobtrusive.Validation.3.2.3,现在一切都正常了。

提交表单时返回false是什么意思?我的意思是它没有提交表单,当我尝试$('form')。Valid()当您输入的值无效时,在chrome developer工具中总是返回false。@stephen,我尝试过这些值也是var validator=$(“form”).validate()validator.errorList---返回空数组$(“#form”).find(“input.error”)--返回空数组,因此如何知道错误值我们不知道您在文本框中输入的值。您的评论表明您使用了一些jQuery,但您的问题中没有关于这一点的内容。除非你解释在什么条件下实际发生了什么,否则没有人能回答这个问题
using (Html.BeginForm("MyPassword", "UserArea", FormMethod.Post))
        {
            @Html.AntiForgeryToken()
            <h1>Manage Password</h1>
            {
                Html.RenderPartial("_UserAreaTabs", Model.TabId);
            }

            if (!string.IsNullOrWhiteSpace(Model.ErrorMessage))
            {
                <p class="@(Model.IsSuccess ? "text-success" : "text-danger")">@Model.ErrorMessage</p>
            }
            <div class="form-horizontal">

                <div class="alert alert-info">
                    Password is case-sensitive and may consist of a-Z, 0-9, underscores(_) and be between
                    6-20 characters.
                </div>
                <div class="form-group">
                    @Html.LabelFor(model => model.NewPassword, new { @class = "control-label col-sm-3" })
                    <div class="input-group col-sm-4">
                        @Html.PasswordFor(model => model.NewPassword, new { @class = "form-control" })
                    </div>
                    <div class="col-sm-offset-3 text-danger">
                        @Html.ValidationMessageFor(model => model.NewPassword)
                    </div>
                </div>
                <div class="form-group">
                    @Html.LabelFor(model => model.ConfirmPassword, new { @class = "control-label col-sm-3" })
                    <div class="input-group col-sm-4">
                        @Html.PasswordFor(model => model.ConfirmPassword, new { @class = "form-control" })
                    </div>
                    <div class="col-sm-offset-3 text-danger">
                        @Html.ValidationMessageFor(model => model.ConfirmPassword)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-3">
                        <input type="submit" name="name" value="Update" class="btn btn-primary" />
                    </div>
                </div>
            </div>
            @Html.ScriptBundle("validatejsbundle")
        }
name: 'validatejsbundle',
    files: [
        'scripts/jquery.validate.js',
        'scripts/jquery.validate.unobtrusive.js'
    ]