데이터베이스 Create(FooViewModel fvm){...}
를 확인하여 fvm.prop1
및 fvm.prop2
이 조합에 이미 있는지 확인합니다 . 그렇다면 모델 상태에 오류를 추가하고 전체보기를 반환하고 싶습니다. 나는 시도했다 :
public ActionResult Create(FooViewModel fvm){
if (ThatComboAlreadyExists(fvm)) {
ModelState.AddModelError("Model", "There is already one like that");
return View(fvm);
}
}
…하지만에 오류가 표시되지 Html.ValidationSummary
않습니다. ‘모델’이 올바른 키가 아니라는 의심이 있지만 구글에서 찾을 수 없었습니다.
답변
나는 결국 내가 찾던 사용법 의 예 를 우연히 발견 했다. 평소와 같이 호출하는 속성 중 하나가 아니라 모델에 오류를 할당하는 것이 일반적이다.
ModelState.AddModelError(string key, string errorMessage);
그러나 키에 빈 문자열을 사용하십시오.
ModelState.AddModelError(string.Empty, "There is something wrong with Foo.");
오류 메시지가 <%: Html.ValidationSummary() %>
예상대로 표시됩니다 .
답변
모델의 모든 속성에 모델 오류를 추가 할 수 있습니다. 새 속성을 만드는 것과 관련이없는 것이 좋습니다.
예를 들어 DB에서 이메일이 이미 사용 중인지 확인하고 조치의 Email 속성에 오류를 추가하여보기를 반환 할 때 오류가 있음을 알고 사용하여 표시하는 방법
<%: Html.ValidationSummary(true)%>
<%: Html.ValidationMessageFor(model => model.Email) %>
과
ModelState.AddModelError("Email", Resources.EmailInUse);
답변
모델 도트 속성을 문자열에 넣는 것이 나를 위해 일했습니다. ModelState.AddModelError("Item1.Month", "This is not a valid date");