Jquery 在MVC3中使用数据注释时,使用[Compare(";,…])比较新密码和确认新密码不起作用
我在@using(Ajax.BeginForm()){-}中有三个PasswordFor、oldpassword、newpassword和confirmnewpassword,我需要这些值与模型绑定,并且需要在客户端使用数据注释验证newpassword和confirmnewpassword的值。我使用[Compare(“newpassword”),errormessage=“error message----”(]来比较newpassword和confirmnewpassword的值。 当我只为newpassword和confirmnewpassword使用两个密码时,[比较(“newpassword”),…]工作非常完美,但如果在Ajax.BeginForm中也使用了oldpassword的密码,则比较验证不起作用。我需要将所有这三个值通过模型传递给我的控制器,并且我无法以相同的形式使用这三个框来比较newpassword和confirmnewpassword。 如果oldpassword是在BeginForm()之外获取的,则比较会起作用,但oldpassword的值不会使用数据注释进行验证,并且其值不会通过模型传递给控制器。 我所需要的就是让这个[Compare()]工作,而我在我的Ajax.BeginForm中有所有这三个PasswordFor,并且在客户端验证我的所有验证之前,它不会被提交。 我们将非常感谢您的帮助 我的看法是:Jquery 在MVC3中使用数据注释时,使用[Compare(";,…])比较新密码和确认新密码不起作用,jquery,asp.net-mvc-3,compare,client-side-validation,data-annotations,Jquery,Asp.net Mvc 3,Compare,Client Side Validation,Data Annotations,我在@using(Ajax.BeginForm()){-}中有三个PasswordFor、oldpassword、newpassword和confirmnewpassword,我需要这些值与模型绑定,并且需要在客户端使用数据注释验证newpassword和confirmnewpassword的值。我使用[Compare(“newpassword”),errormessage=“error message----”(]来比较newpassword和confirmnewpassword的值。 当我只
@model eremit.Models.CustomerAll
@使用(Ajax.beginnform(“verifycustomer”、“CustomerLogin”、新的AjaxOptions{UpdateTargetId=“messagediv”}))
{
@Html.ValidationSummary(true)
古老的password@Html.PasswordFor(model=>model.Login.oldpassword)
@Html.ValidationMessageFor(model=>model.Login.oldpassword)
新的password@Html.PasswordFor(model=>model.Login.newpassword)
@Html.ValidationMessageFor(model=>model.Login.newpassword)
重新输入新的password@Html.PasswordFor(model=>model.Login.confirmnewpassword)
@Html.ValidationMessageFor(model=>model.Login.confirmnewpassword)
我的模型:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;
namespace eremit.Models
{
public class Login
{
[Required(ErrorMessage = "* Please enter old password")]
public string oldpassword { get; set; }
[Required(ErrorMessage = "* Please enter new password")]
[Display(Name = "newpassword")]
[RegularExpression("^[a-zA-Z<>$@#!%&_0-9]+$", ErrorMessage = "Invalid Password")]
public string newpassword { get; set; }
[Required(ErrorMessage = "* Re-enter your new password")]
[Compare("newpassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string confirmnewpassword { get; set; }
}
}
使用系统;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
利用制度全球化;
使用System.Web.Mvc;
使用System.Web.Security;
命名空间eremit.Models
{
公共类登录
{
[必需(ErrorMessage=“*请输入旧密码”)]
公共字符串oldpassword{get;set;}
[必需(ErrorMessage=“*请输入新密码”)]
[显示(Name=“newpassword”)]
[RegularExpression(“^[a-zA-Z$@#!%&_0-9]+$”,ErrorMessage=“无效密码”)]
公共字符串newpassword{get;set;}
[必需(ErrorMessage=“*重新输入新密码”)]
[比较(“newpassword”,ErrorMessage=“新密码和确认密码不匹配。”)]
公共字符串confirmnewpassword{get;set;}
}
}
自从引入MVC 3以来,Microsoft库,如MicrosoftJax.js、MicrosoftMvcAjax.js和MicrosoftMvcValidation.js已经过时
这些库被MVC3中的jquery.validate.min.js、jquery.unobtrusive ajax.min.js和jquery.validate.unobtrusive.min.js替换。只需评论Microsoft帮助程序并尝试一下
MicrosoftAjax.js
MicrosoftAjax.debug.js
MicrosoftMvcAjax.js
MicrosoftMvcAjax.debug.js
MicrosoftAjax.js
MicrosoftAjax.debug.js
MicrosoftMvcAjax.js
MicrosoftMvcAjax.debug.js