Ограничение удаленной проверки для метода редактирования контроллера

У меня есть модель для регистрации

мой модельный класс

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

 [HttpPost]
    public JsonResult doesusernameExist(string usrname)
    {

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


    }

Для создания нового пользователя и редактирования пользователя я использую модель выше. поэтому, не создавая другую модель, я хочу отключить вызывающий метод didusernameExist в методе редактирования.

2 ответа

Решение

Сначала в режиме редактирования отключите проверку на стороне клиента для username:

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

Второе в правке "Редактировать сообщение" удалить результат проверки для username от ModelState:

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

Сначала добавьте скрытое поле в View как:

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

В вашем классе.cs добавьте следующее:

[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);

}
Другие вопросы по тегам