문제

나는 얻을 수 없다 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을 사용한 것은 이번이 처음입니다.

도움을 주셔서 감사합니다!

도움이 되었습니까?

해결책

문제는 당신이 접두사를 사용하지 않는다는 사실이라고 생각합니다. ModelState를 디버깅하면 ".firstname"과 같은 것들에 대한 유효성 검사를 볼 수 있지만 "FirstName"과 같아야합니다. 이 때문에 클라이언트 측 유효성 검사 요약 및 재료는 이러한 유효성 검사 오류 메시지를 표시하지 않습니다.

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

다른 팁

Adrian의 시점에서, 우리는 당신이 당신의 뷰 모델에서 데이터 알노 테이션을 사용하고 있는지 또는 당신이 다음에 설명 된 어떤 종류의 러너를 사용하고 있는지 알 수 없습니다. 이 기사 . 사용하는 유효성 검사 속성 (예 : 필요한, 범위 등)에 의해 지정된대로 View 모델의 각 속성에 대한 유효성 검사를 실행하기 위해 언급 한 DataAnnotationsValidationRunner와 같은 것을 사용해야합니다.

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

  1. 양식에서 업데이트 된 강력한 뷰 모델을 검색하십시오.
  2. 그 모델을 당신에게 전달하십시오 DataAnnotationsValidationRunner, 결과적으로 오류를 수집합니다
  3. 오류가 있으면 (ErrorInfo 객체) RulesException
  4. 잡아라 RulesException 예외를 사용하여 모델에 유효성 검사 예외를 추가하십시오. AddModelStateErrors 방법
  5. 확인하십시오 ModelState.IsValid, 그렇지 않은 경우 예외 처리 덕분에 뷰 모델에 오류가 제한됩니다. 당신은 당신이 적절한 것을 가지고 있는지 확인해야합니다 ValidationMessage HTML 헬퍼는 제자리에 전화를 걸고 링크 된 기사에서도 참조합니다.

내가 무엇이 잘못되고 있는지 알아낼만큼 충분히 간결하지 않은 게시물이지만, 끝에서 완전히 작동하는 데모 웹 사이트를 찾을 수 있습니다. 이 블로그 기사. 이 기사는 또한 단계별로 수행하는 데 필요한 모든 것을 설명하므로 XVal을 실행하는 데 도움이됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top