编辑控制器方法的远程验证限制
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);
}
我有寄存器模型
我的模型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);
}