2009-11-17 1 views
0

강력하게 형식화 된보기 모델을 사용하여 xVal validation을 사용할 수 없습니다.강력한 형식의 ViewModel을 사용하는 ASP.NET MVC xVal

xVal의 모든 메서드는 강력한 형식의 뷰 모델을 처리 할 때 사용되지 않는 접두사를 원합니다.

내보기는이 유사한 코드가 포함

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ContactForm>" %> 
<%= Html.TextBox("firstName", Model.FirstName) %> 

를 다음 코드는 컨트롤러에 간다 :

try 
{ 
    var theModel = form.ToModel(); 
    _contactRepository.Save(theModel); 
} 
catch (RulesException ex) 
{ 
    ex.AddModelStateErrors(ModelState, string.Empty); // Passing string.Empty for prefix, since I don't use prefixes. 
} 

return View(form); 

그러나, 위의 코드가 작동하지 않습니다. 나는 분명히 뭔가를 놓쳤지 만, 무엇을 모르겠다. 이것은 xVal을 처음 사용하는 것입니다.

도움 주시면 감사하겠습니다.

+0

"위의 코드가 작동하지 않음"이란 무엇을 의미합니까? 위의 ToModel() 함수의 출처는 어디입니까? 모델은 어떻게 보이나요? 내가 뭘 잘못 생각하는지 더 많은 정보를 볼 필요가있어. –

답변

0

저는 문제는 접두사를 사용하지 않는다는 것입니다. ModelState를 디버깅하면 "FirstName"과 같아야하지만 ".FirstName"과 같은 항목에 대한 유효성을 확인할 수 있습니다. 그 때문에 클라이언트 측 유효성 검사 요약 및 내용에는 유효성 검사 오류 메시지가 표시되지 않습니다.

나는 이것이 xVal의 버그라고 생각합니다.

0

귀하의 글은 무엇이 잘못 되었는가를 간략하게 설명하지는 않지만, this blog article의 끝에 완전한 데모 웹 사이트를 찾을 수 있습니다. 이 기사에서는 단계별로 수행해야 할 모든 작업도 설명하므로 xVal을 실행하는 데 도움이됩니다.

0

Adrian의 관점에서 볼 때 DataAnnotations를 뷰 모델에 사용하고 있는지 또는 this article에 설명 된 런너를 사용하고 있는지는 알 수 없습니다. 사용하는 유효성 검사 속성 (예 : 필수, 범위 등)에 지정된대로 뷰 모델의 각 속성에 대해 유효성 검사를 실행하려면 DataAnnotationsValidationRunner와 같은 것을 사용해야합니다.

기본적 단계는 다음과 같습니다

  1. 양식에서 업데이트 된 강력한 형식의 뷰 모델을 검색합니다.
  2. 오류 (ERRORINFO 개체)이 있다면
  3. 가하는 RulesException
  4. 잡아라 RulesException로 던져 사용하여 모델에 유효성 검사 예외를 추가 결과 오류를 수집하여 DataAnnotationsValidationRunner에 그 모델을 전달하는 예외의 AddModelStateErrors 메서드
  5. ModelState.IsValid을 확인하고 그렇지 않은 경우보기를 표현합니다. 예외 처리로 인해 뷰 모델에 오류가 바인딩됩니다. 적절한 ValidationMessage html 도우미 호출이 있어야하며 링크 된 아티클이 참조해야합니다.