编辑控制器方法的远程验证限制

Remote validation restrict for edit controller method

我有寄存器模型

我的模型class

public class RegisterViewModel
{


    [Required]
    [StringLength(100, ErrorMessage = "Please enter a minimum of {2} characters", MinimumLength = 6)]
    [DisplayName("University ID")]
    [Remote("doesusernameExist", "HEC",null, ErrorMessage = "usr name is allready exist", HttpMethod = "POST")]
    public string usrname { get; set; }    }

我的json控制器class

 [HttpPost]
    public JsonResult doesusernameExist(string usrname)
    {

         var institute = db.Institutes.Find(HEI_ID);
                   return Json(institute == null);


    }

用于创建新用户和编辑我正在使用上述模型的用户。所以在不创建另一个模型的情况下,我想在编辑方法

中禁用 doesusernameExist 调用方法

首先在编辑视图中禁用 username 的客户端验证:

@Html.TextBoxFor(m => m.username, new { @data_val = "false" })

第二次编辑 Post 操作从 ModelState 中删除 username 的验证结果:

public ActionResult EditUser([Bind(Exclude = "usrname")]RegisterViewModel model)
{
    ModelState.Remove("username");
    if (ModelState.IsValid)
    {
    .
    .
    .

首先在视图中添加一个隐藏字段为:

@Html.hidden("PreviousUsername", Model.usrname)

在您的 .cs class 添加以下内容:

[Remote("doesusernameExist", "HEC", ErrorMessage = "usr name is allready exist", AdditionalFields = "PreviousUsername")]
public string usrname { get; set; }

你的控制器操作方法应该是这样的:

public JsonResult doesusernameExist(string usrname, string PreviousUsername)
{

     if(usrname==PreviousUsername)
     {
       return true;
     }
     var institute = db.Institutes.Find(HEI_ID);
     return Json(false, JsonAlloBehaviour.AllowGet);

}