简体   繁体   English

如何正确处理控制器提交方法中的远程属性验证

[英]how to handle remote attribute validation in controller submit method properly

This is my Model 这是我的模特

  [Required(ErrorMessage="Current password is required")]
    [Remote("IsCorrectOldPassword", "Account", ErrorMessage = "The password you gave is incorrect.")]
    [DataType(DataType.Password)]
    [Display(Name = "Current Password")]
    public string OldPassword { get; set; }

    [Required]
    [StringLength(20, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [DataType(DataType.Password)]
    [Display(Name = "New Password")]
    public string NewPassword { get; set; }

this is my view 这是我的看法

 @using (Ajax.BeginForm("ChangePassword", "Account", new AjaxOptions { HttpMethod = "POST", OnSuccess = "AfterSave()", UpdateTargetId = "formcontents" }, new { @id = "formSavePwd" }))
            {
                @Html.AntiForgeryToken()
                @Html.ValidationSummary(true)

@ @Html.HiddenFor(m => m.UserId) @ @ @ Html.HiddenFor(m => m.UserId) @

                <table style="width: 100%">

                    @*<caption>Change Password Form</caption>*@

                    <tr>
                        <td>@Html.LabelFor(m => m.OldPassword)


                        </td>
                        <td>
                            @Html.PasswordFor(m => m.OldPassword, new { @enabled = true, maxlength = 20, size = 20 })
                            @Html.ValidationMessageFor(m => m.OldPassword)
                        </td>
                    </tr>

                    <tr>
                        <td>@Html.LabelFor(m => m.NewPassword)

                        </td>
                        <td>
                            @Html.PasswordFor(m => m.NewPassword)
                           @* @Html.ValidationMessageFor(m => m.NewPassword)*@

                        </td>
                    </tr>

and this is my controller 这是我的控制器

 public ActionResult ChangePassword(LocalPasswordModel passwordModel)
     {

         if (ModelState.IsValid)
         {
             var user = new FcpUserDto();
             user.ClientId = (Int64) SessionObjects.ClientId;
             user.ClientKey = Guid.NewGuid().ToString();
             user.LoginPassword = passwordModel.NewPassword;
             user.DateModified = DateTime.Now;
             user.UserId = (long) passwordModel.UserId;
             StatusDto statusDto = _FcpEndpoint.ChangePassword(user);
             //return Json(true, JsonRequestBehavior.AllowGet);
         }
         else
         {
             var model = new LocalPasswordModel();



             var languageItems = (from ResourceLabels.UserManagementlabels resourceLabel in Enum.GetValues(typeof(ResourceLabels.UserManagementlabels))
                                  select new FcpLanguageItemsDto
                                  {
                                      ClientId = SessionObjects.ClientId,
                                      LanguageId = SessionObjects.ClientLanguageId,
                                      ObjectId = (long)resourceLabel,
                                      ObjectType = (short)EnumObjectType.SRM_SCREEN_LABELS,
                                      TokenId = (long)EnumPhrase.Label
                                  }).ToList();
             model.ResourceLabelModel = WebMapper.CreateResourceLabelModelList(_FcpEndpoint.GetPhrases(languageItems));
             ModelState.AddModelError("", "");
             return PartialView("_ChangePasswordPartial",model);
             //return Json(false, JsonRequestBehavior.AllowGet);
         }



        return null;
     }

on submit controller method is called but remote attribute validations are not working, i don't know what I am missing my remote attribute method is just not called. 关于提交控制器方法被调用,但远程属性验证不起作用,我不知道我缺少的远程属性方法只是不被调用。 below is my action method for IsCorrectOldPassword 以下是我对IsCorrectOldPassword的操作方法

 public JsonResult IsCorrectOldPassword(string OldPassword)
     {
         const string errorHTML = "<span class='Error'><div class='Validation-Error-Text errorImg'   > </div><div class='MSGReg'>{0}</div></span>";
         const string IncorrectOldPwd = "The password you gave is incorrect.";
         //if (FcpLocalPasswordDto.IsCorrectOldPassword(new FcpLocalPasswordDto()
         //{
         //    UserId = SessionObjects.UserId,
         //    OldPassword = OldPassword
         //}).IsSuccessful)

         var userPassword = new FcpLocalPasswordDto();
         userPassword.OldPassword = OldPassword;
         userPassword.UserId = SessionObjects.UserId;

        StatusDto statusDto = _FcpEndpoint.IsCorrectOldPassword(userPassword);
        //if successful
        if (statusDto.IsSuccessful) 
        {
            return Json(string.Format(errorHTML, IncorrectOldPwd), JsonRequestBehavior.AllowGet); 
        }

        return Json(true, JsonRequestBehavior.AllowGet);
     }   

只需添加jquery.validate.js即可,以上代码将开始正常运行

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django如何正确提交表单并处理请求? - Django how to properly submit form and handle request? 使用 jquery 验证插件远程验证后如何使用 ajax 提交表单 - how to submit form with ajax after remote validation with jquery validation plugin 如何在Rails 4中正确处理远程链接? JSON? - How do I properly handle a remote link to in Rails 4? JSON? jQuery验证:远程方法 - jQuery validation: remote method 如何正确地将单击的按钮属性值传递给表单提交事件? - How to properly pass clicked button attribute value to form submit event? JQuery Validation - 远程方法总是在提交表单之前检查并变为真 - JQuery Validation - Remote method always check and become true before submit the form undefine方法submit_to_remote - undefine method submit_to_remote MVC专家将如何处理这些模型属性更改及其对控制器的影响? - How would an MVC guru handle these Model attribute changes and their Controller consequences? 如何从有状态组件的句柄提交中呈现方法 - How to render method from handle submit of a stateful component 如何在表单验证中使用Angular应用jquery的远程方法? - How to apply remote method of jquery using Angular in form validation?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM