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