Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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 在MVC3中使用数据注释时,使用[Compare(";,…])比较新密码和确认新密码不起作用_Jquery_Asp.net Mvc 3_Compare_Client Side Validation_Data Annotations - Fatal编程技术网

Jquery 在MVC3中使用数据注释时,使用[Compare(";,…])比较新密码和确认新密码不起作用

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的值。 当我只

我在@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,并且在客户端验证我的所有验证之前,它不会被提交。 我们将非常感谢您的帮助

我的看法是:

@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.jsMicrosoftMvcAjax.jsMicrosoftMvcValidation.js已经过时

这些库被MVC3中的jquery.validate.min.jsjquery.unobtrusive ajax.min.jsjquery.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