MVC3验证输入不等于属性
MVC3 Validate input not-equal attribute
我已经完全按照Darin Dimitrov在以下位置提供的方式实现了NotEqual属性:https://stackoverflow.com/a/5742494/1946707
我在这里遇到的问题是,我使用的是jQuery对话框,并且希望在对话框的客户端进行验证。我需要的验证启动,但不相等的验证在客户端不起作用。。。任何帮助都将不胜感激。
这是我的型号:
public class ChangePasswordModel
{
[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }
[Required]
[NotEqual("OldPassword", ErrorMessage = "should be different than Prop1")]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm new password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
这是我的观点:
@using (Html.BeginForm("ChangePassword", "Account", new { area = "" }, FormMethod.Post, new { id = "changePasswordForm" }))
{
<a href="#" onclick="openChangePasswordDialog();">Change Password</a>
<div id="dialogChangePassword" title="Change Password">
<table>
<tr>
<td>@Html.LabelFor(m => m.OldPassword)
</td>
<td>@Html.PasswordFor(m => m.OldPassword)
</td>
<td>@Html.ValidationMessageFor(m => m.OldPassword)
</td>
</tr>
<tr>
<td>@Html.LabelFor(m => m.NewPassword)
</td>
<td>@Html.PasswordFor(m => m.NewPassword)
</td>
<td>@Html.ValidationMessageFor(m => m.NewPassword)
</td>
</tr>
<tr>
<td>@Html.LabelFor(m => m.ConfirmPassword)
</td>
<td>@Html.PasswordFor(m => m.ConfirmPassword)
</td>
<td>@Html.ValidationMessageFor(m => m.ConfirmPassword)
</td>
</tr>
</table>
</div>
}
这是我的javascript:
var changePasswordDialogId = '#dialogChangePassword';
var oldPasswordInput = '#changePasswordForm #OldPassword';
var newPasswordInput = '#changePasswordForm #NewPassword';
var confirmPasswordInput = '#changePasswordForm #ConfirmPassword';
$(document).ready(function () {
$(changePasswordDialogId).dialog(
{
autoOpen: false,
autoResize: true,
modal: true,
open: function () {
$(this).parent().appendTo("#changePasswordForm");
},
buttons: {
Ok: function () {
if ($(oldPasswordInput).valid() && $(newPasswordInput).valid() && $(confirmPasswordInput).valid()) {
alert('ready to post!');
$(changePasswordDialogId).dialog('close');
}
},
Cancel: function () {
$(changePasswordDialogId).dialog('close');
}
}
});
}); //document.ready
function openChangePasswordDialog() {
$(changePasswordDialogId).dialog('open');
}
似乎忘记注册验证适配器
jQuery.validator.unobtrusive.adapters.add(
'notequalto', ['other'], function (options) {
options.rules['notEqualTo'] = '#' + options.params.other;
if (options.message) {
options.messages['notEqualTo'] = options.message;
}
});
Darin Dimitrov在回答中详细说明了这一点。
好的,所以我发现了我的问题。我错过了IClientValidatable
的继承现在我已经添加了它,它可以在客户端工作,甚至在我的jQuery对话框中也是如此。
相关文章:
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- Css order属性不't在Jquery设置时更新
- CORS:访问控制允许原点不等于提供的原点
- Bookshelf.js设置的属性不在数据库中
- 查找数组's按属性不存在于另一个数组中的对象
- 在javascript函数调用中传递的HTML属性不完整
- 在jQuery中链接时CSS属性不起作用
- 设置AngularJS控制器属性不能是使用Coffeescript的最后一行
- 向插件添加属性(不是默认方式)
- Css 属性不会更改(javascript)
- 函数中的 angularJS 访问对象属性不起作用
- JavaScript - 对象属性不一致
- 为什么我的 React getDOMNode().textContent JavaScript 字符串不等于字符串
- 控制器的属性不会动态更改
- 为什么“this”不等于“Object”,为什么属性是“undefined”
- MVC3验证输入不等于属性
- 如何使用jquery选择具有属性和不等于特定值的元素
- jQuery属性不等于html选择器
- 删除<选项>当自定义属性不等于x时,由.class AND执行
- 统计data属性不等于一定数量的类的数量