2009-03-19 12 views
0

유효성 검사 메시지를 설정하는 데 문제가 있습니다. 하나의 컨트롤에 두 개의 모델이 있고 두 모델 모두 동일한 속성 인 "amount"를 가지고 있습니다.유효성 확인 메시지

하나의 Model.amount에 대한 유효성을 설정하면 다른 Model.amount에도 반영됩니다. 나는 두 가지 모두에 다른 ID를 전달하려고했지만 작동하지는 않습니다.

<%= Html.TextBox("amount", Model.amount, new { id = "Pamount" })%> 
    <%=Html.ValidationMessage("Pamount", " ")%> 
<%= Html.TextBox("amount", Model.amount, new { id = "Eamount" })%> 
    <%=Html.ValidationMessage("Eamount", " ")%> 

과 행동에 나는

if (obj.amount.ToString() == "0") 
      modalState.AddModelError("Pamount", ""); 

을 설정하고 있지만, 검증뿐만 아니라

어떻게해야합니까 Eamount에 적용된다?

답변

0

모델 오류를 추가 할 때 ID가 아닌 이름으로 필드에 액세스한다고 생각합니다. 그래서 나는 단지 하나의 혼란이 발생할 수있는 오류의 원인이되는 때 둘 다에 오류를 추가하지 않도록 텍스트 상자를 다른 이름을주고 추천 할 것입니다, 또한

ModelState.AddModelError("amount", ""); 

을 수행 할 것입니다.

0

유효성 검사 강조 표시는 컨트롤 이름을 기반으로 적용됩니다. 모델 바인딩이 작동하려면 이름이 특성 이름을 반영해야합니다. 따라서 동일한 이름을 가진 두 개의 컨트롤을 가질 수 없으며 유효성 검사 강조 표시가 올바르게 작동합니다. 따라서 컨트롤에 다른 이름을 지정해야합니다. 이 작업을 수행 할 수있는 방법은 두 가지가 있습니다.

  1. 다양한 양에 대해 두 가지 다른 속성을 가진 프레젠테이션 모델을 만듭니다. 양식을 표시하거나 게시물을 처리 할 때 업데이트중인 실제 개체로 /에서 프레젠테이션 모델을 변환합니다.

  2. 두 개체에 대한 하위 속성이있는 단일 모델을 만든 다음 점 표기법을 사용하여 두 금액에 액세스하십시오. 이처럼

:

<%= Html.TextBox("Foo.amount", Model.Foo.amount, [...] 
<%= Html.TextBox("Bar.amount", Model.Bar.amount, [...]