Javascript 如何向mvcClientValidationMetadata添加新的验证规则?
我有一个表单,其中有两个字段需要相等(密码和密码确认)。我已经创建了一个class属性来检查这一点,在服务器端它工作得很好。在客户端,它什么也不做。我需要消息出现在ValidationSummary中(“密码重复”需要与“密码”相同) 我意识到检查这些字段的最简单方法是手动将规则添加到window.mvcClientValidationMetadata。我试着这么做,但没有任何效果 我的代码:Javascript 如何向mvcClientValidationMetadata添加新的验证规则?,javascript,jquery,validation,asp.net-mvc-2,Javascript,Jquery,Validation,Asp.net Mvc 2,我有一个表单,其中有两个字段需要相等(密码和密码确认)。我已经创建了一个class属性来检查这一点,在服务器端它工作得很好。在客户端,它什么也不做。我需要消息出现在ValidationSummary中(“密码重复”需要与“密码”相同) 我意识到检查这些字段的最简单方法是手动将规则添加到window.mvcClientValidationMetadata。我试着这么做,但没有任何效果 我的代码: <% using (Html.BeginForm("ResetPassword", "Accou
<% using (Html.BeginForm("ResetPassword", "Account", FormMethod.Post}))
{ %>
<%= Html.ValidationSummary() %>
<div>
<%= Html.ValidationMessageFor(m => m.Email)%>
<%= Html.LabelFor(m => m.Email)%>
</div>
<div>
<%= Html.TextBoxFor(m => m.Email)%>
<% Html.ValidateFor(m => m.Email);%>
</div>
<div>
<%= Html.ValidationMessageFor(m => m.PasswordModel.Password)%>
<%= Html.LabelFor(m => m.PasswordModel.Password)%>
</div>
<div>
<%= Html.PasswordFor(m => m.PasswordModel.Password)%>
</div>
<div>
<%= Html.ValidationMessageFor(m => m.PasswordModel.PasswordRepeated)%>
<%= Html.LabelFor(m => m.PasswordModel.PasswordRepeated)%>
</div>
<div>
<%= Html.PasswordFor(m => m.PasswordModel.PasswordRepeated)%>
</div>
<div>
<%= Html.ValidationMessageFor(m => m.PasswordModel.PasswordRepeated)%>
<%= Html.LabelFor(m => m.PasswordModel.PasswordRepeated, true)%>
</div>
<% } %>
m、 电子邮件)%%>
m、 电子邮件)%%>
m、 电子邮件)%%>
m、 电子邮件);%%>
m、 PasswordModel.Password)%%>
m、 PasswordModel.Password)%%>
m、 PasswordModel.Password)%%>
m、 PasswordModel.PasswordRepeated)%%>
m、 PasswordModel.PasswordRepeated)%%>
m、 PasswordModel.PasswordRepeated)%%>
m、 PasswordModel.PasswordRepeated)%%>
m、 PasswordModel.PasswordRepeated,true)%%>
Html.EnableClientValidation
方法在生成此表单之前执行
下面您将找到我的问题的解决方案。您可能会做的最糟糕的事情是执行相同的代码-您将覆盖现有规则 若要添加验证规则,您需要将此代码放在关闭
后,然后使用(…
)命令:
<% } %>
<script type="text/javascript">
window.mvcClientValidationMetadata[0]["Fields"].push( //check if the '0' is number corresponding to your form validation metadata
{
"FieldName": "PasswordModel.PasswordRepeated", // name attribute of the element
"ReplaceValidationMessageContents": false,
"ValidationMessageId": "PasswordModel_PasswordRepeated_validationMessage", //id of the ValidationMessageFor (if needed)
"ValidationRules":
[
{
"ErrorMessage": 'Password repeated needs to be the same as Password',
"ValidationParameters": "#PasswordModel_Password", //'params' parameter in your validation function, can be an object
"ValidationType": "propertiesMustMatch" //name of the validation function placed in $.validator.methods
}
]
}
);
</script>
window.mvcClientValidationMetadata[0][“字段”]。push(//检查“0”是否是与表单验证元数据对应的数字
{
“FieldName”:“PasswordModel.PasswordRepeated”,//元素的name属性
“ReplaceValidationMessageContents”:false,
“ValidationMessageId”:“PasswordModel\u PasswordRepeated\u validationMessage”,//ValidationMessageFor的id(如果需要)
“验证规则”:
[
{
“ErrorMessage”:“重复的密码需要与密码相同”,
“ValidationParameters”:“#PasswordModel_Password”//“params”参数在验证函数中可以是一个对象
“ValidationType”:“propertiesMustMatch”//位于$.validator.methods中的验证函数的名称
}
]
}
);
propertiesMustMatch函数检查给定字段是否相等(jQuery equalTo在我们的系统中无法正常工作)
不存在“未捕获类型错误:无法调用未定义”异常的方法“push”,因为mvcClientValidationMetadata是在
元素put中生成的,其中
是