Compare (password) attribute

前端 未结 2 1358
长发绾君心
长发绾君心 2021-02-04 03:43

I\'d like to create a view model for a new user using the code below. The \"User\" class contains just the two properties (simplified for now) that I will persist to the databas

相关标签:
2条回答
  • 2021-02-04 04:16

    Just found the answer via StackOverflow and Microsoft Connect:

    See:

    http://connect.microsoft.com/VisualStudio/feedback/details/665793/jquery-unobtrusive-validate-equalto-fails-with-compare-attribute and JQuery 1.5 breaks Compare Validate (JQuery Validate 1.8)

    To summerize, it looks like a bug in the jquery.validate.unobtrusive file that came with MVC3. The workaround is changing the following line in the jquery.validate.unobtrusive file.

    element = $(options.form).find(":input[name=" + fullOtherName + "]")[0];
    

    to

    element = $(options.form).find(":input[name=" + fullOtherName.replace(".", "\\.") + "]")[0];
    

    On Microsoft Connect, it says MS has fixed it, but i couldnt find the link to the new version. Anyways, this works for me in the meantime. Hope it helps

    0 讨论(0)
  • 2021-02-04 04:17

    I fixed this issue using two fields and comparing on server (via unobtrusive JavaScript):

        [Required(ErrorMessage = @"The new password is required")]
        [StringLength(25, ErrorMessage = @"The new password must be at least {2} characters long", MinimumLength = 4)]
        [DataType(DataType.Password)]
        [Display(Name = @"New Password")]
        public string NewPassword { get; set; }
    
        [Required(ErrorMessage = @"The confirmation of password is required")]
        [StringLength(25, ErrorMessage = @"The confirmation of new password must be at least {2} characters long", MinimumLength = 4)]
        [DataType(DataType.Password)]
        [Display(Name = @"Confirm New Password")]
        public string ConfirmPassword { get; set; }
    

    Server-side code:

        [HttpPost]
        public ViewResult ChangeUserPassword(ChangePasswordModel model)
        {
            Logger.Debug(LogBuilder.MethodEntry("ChangeUserPassword"));
    
            if (model == null)
            {
                throw new ArgumentNullException("model");
            }
    
            if (model.NewPassword != model.ConfirmPassword)
            {
                ModelState.AddModelError("", Messages.ConfirmPasswordError);
    
                return View(model);
            }
    
            if (ModelState.IsValid)
            {
                var changePasswordCompleted = false;
    
                try
                {
                    var userName = CurrentPerson.UserDetails.UserName;
                    var membershipUser = Membership.GetUser(userName);
    
                    if (membershipUser != null)
                    {
                        changePasswordCompleted = membershipUser.ChangePassword(model.OldPassword, model.NewPassword);
                    }
                }
                catch (Exception exception)
                {
                    changePasswordCompleted = false;
    
                    Logger.Error(LogBuilder.LogMethodError("ChangeUserPassword", exception));
                }
    
                if (changePasswordCompleted)
                {
                    return View("ChangePasswordCompleted");
                }
            }
    
            ModelState.AddModelError("", Messages.ChangePasswordError);
    
            return View(model);
        }
    
    0 讨论(0)
提交回复
热议问题