문제

MVC 유효성 검사 라이브러리를 사용하고 있습니다 링크 텍스트. MS Enterprise Library 유효성 검사 블록을 사용하여 모든 유효성 검사 속성을 생성하는 .Nettiers도 사용하고 있기 때문에이 라이브러리를 선택했습니다.

모델 바인딩이 객체를 자동으로 검증하고 유효성 검사 요약을 채우는 것을 제외하고는 잘 작동합니다. 나는 이것을 정상적인 행동에서 믿는다.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
    return View();
}

유효성 검사 라이브러리에는 다음과 같이 문서화 된 메소드도 있습니다.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register([Bind()]NetTiersObject obj)
{
    try
    {
        obj.Validate<NetTiersObject>();
    }
    catch (EntityValidationException ex)
    {
        ViewData.ModelState.PopulateWithErrors(ex);
    }
    return View();
}

이것은 또한 잘 작동합니다.

내 문제는 검증 라이브러리의 메소드를 사용할 때 오류 메시지가 복제된다는 것입니다. 모델을 사용하는 경우 오류 메시지가 이상하게 보입니다. 오류는 메시지에 속성 이름이 있습니다.

따라서 모델 바인딩 오류 메시지를 포맷하거나 모델 바인딩을 완전히 비활성화해야한다고 생각합니다.

권장 사항, 도움?

감사.

도움이 되었습니까?

해결책 2

내 ModelState가 유효하지 않은 이유에 대한 답을 찾았습니다. 양식 요소는 모델과 일치하지 않으며, 이는 ModelState가 즉시 유효하지 않은 유일한 방법입니다.

더 많은 세부 사항을 찾으면이 게시물을 업데이트하겠습니다.

다른 팁

시도해 보셨습니까 :

    /*At the Point the ModelState should be Valid(TRUE)
      because we still didn't enforce any validations */
    var v = ModelState.IsValid;

try
    {
        obj.Validate<NetTiersObject>();
    }
    catch (EntityValidationException ex)
    {
        ViewData.ModelState.PopulateWithErrors(ex);
    }

그리고 v가 true인지 확인하십시오. 그렇다면 사실이라면 obj.Validate<NetTiersObject>(); 유일한 오류가 복제 되었기 때문에 뭔가 잘못하고 있습니다.

내 문제는 검증 라이브러리의 메소드를 사용할 때 오류 메시지가 복제된다는 것입니다. 모델을 사용하는 경우 오류 메시지가 이상하게 보입니다. 오류는 메시지에 속성 이름이 있습니다.

ModelBinding은 최소한 사용자 정의 모델 바인딩을 사용하지 않거나 필드를 검증하지 않고 DB에 저장하려는 경우 모델 오류를 채우지 않아야하기 때문에 이상합니다.

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