В моей пользовательской проверке модели, у меня есть следующая:модель связывания ошибка проверки
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext){
var repository = DependencyResolver.Current.GetService(typeof(IContactRepository));
IContactRepository repo = repository as IContactRepository;
USRContact c = repo.GetContactByID(Convert.ToInt64(bindingContext.ValueProvider.GetValue("ContactID").AttemptedValue));
c.FormalName = bindingContext.ValueProvider.GetValue("FormalName").AttemptedValue;
if (!repo.IsValidFormalName(c.ContactID, c.FormalName))
{
var result = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
bindingContext.ModelState.AddModelError("FormalName", Resources.ErrorMsgs.FormalNameNotUnique);
return bindingContext.Model;
}
c.PreferredName = bindingContext.ValueProvider.GetValue("PreferredName").AttemptedValue;
c.Alias = bindingContext.ValueProvider.GetValue("Alias").AttemptedValue;
c.Pseudonym = bindingContext.ValueProvider.GetValue("Pseudonym").AttemptedValue;
c.GenderID = Convert.ToInt32(bindingContext.ValueProvider.GetValue("GenderID").AttemptedValue);
c.NationalityID = Convert.ToInt32(bindingContext.ValueProvider.GetValue("NationalityID").AttemptedValue);
c.ModifiedByID = Utilities.SessionUtil.Current.UserID;
c.ModifiedDate = DateTime.Now;
}
Мой контроллер называет эту модель связующую, выполнив следующие действия:
public ActionResult Update([ModelBinder(typeof(ModelBinder.ContactModelBinder))] USR.USRContact contact)
{
if (ModelState.IsValid)
{
repository.Update();
return View("~/Views/Shared/Contacts/ShowContactInfo.cshtml", repository.GetContactByID(contact.ContactID));
}
}
}
My viewmodel содержит аннотации данных, чтобы сказать, что требуется формальное имя, и что alia s должно быть менее 60 символов. Как отображать ошибки, если привязка модели превратила ее в постоянную модель данных (USRContact), и мое представление ожидает модель обзора?
Есть ли способ убедиться, что при ошибках проверки на модели представления контроллер не преобразуется в постоянную модель данных? Даже если мы проверим все ошибки модели в объекте данных и найдем ошибки проверки, как мы отправляем пользователя обратно в представление, в котором они находились, с ошибками рядом с текстовыми полями, в которых они содержали ошибку.
Спасибо за помощь! Safris