:모델 바인딩 유효성 검사 오류 내 사용자 정의 모델 검증에서
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));
}
}
}
: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;
}
내 컨트롤러는 다음을 수행하여이 모델 바인더를 호출
내 viewmodel에는 공식적인 이름이 필요하며 그 외에도 alia s는 60 자 미만이어야합니다. 모델 바인더가 영구 데이터 모델 (USRContact)로 변환하고 뷰에서 뷰 모델을 예상하는 경우 오류를 어떻게 표시합니까?
뷰 모델의 유효성 검사 오류에서 컨트롤러가 영구 데이터 모델로 변환되지 않도록하는 방법이 있습니까? 데이터 객체의 모든 모델 오류를 검사하고 유효성 검사 오류를 찾더라도 오류가있는 텍스트 상자 옆에있는 오류가있는 방금 사용자에게 다시 보냅니다.
도움 주셔서 감사합니다! Safris