2010-04-16 4 views
2

"개인"및 "비즈니스"모델을 캡슐화하는 ViewModel 클래스가 있습니다. 내 문제는 두 모델 모두 "전자 메일"이라는 속성이 있으며 모델 바인딩은 두 모델을 구별하지 못한다는 것입니다.동일한 이름을 가진 두 개의 필드

이 문제를 해결하기 위해 [Bind(Prefix = ...이 사용되었지만이를 달성하는 방법에 대한 간결한 예제를 볼 수 없었습니다.

public class BusinessFormViewModel 
{ 
    public Business Business { get; set; } 
    public ContactPerson ContactPerson { get; set; } 

    public BusinessFromView(Business business, ContactPerson contactPerson) 
    { 
     Business = business; 
     ContactPerson = contactPerson; 
    } 
} 

이 문제를 해결하기 위해 바인드 접두어를 어떻게 사용합니까?

+0

양식은 어떻게 작성되고 있습니까? 그것은 어떻게 묶여 있습니까? 이름 지정 문제를 정확하게 진단하려면 더 많은 정보가 필요합니다. – Jab

답변

1

게시 된 양식 요소에 이름에 접두어가 포함되어 있으면 바인딩이 올바르게 수행됩니다. 템플릿 기반 도우미 (예 : EditorFor)가 컨트롤을 렌더링하고 내 중첩 된 뷰 모델이 올바르게 바인딩되는 방식입니다. MVC (2) 템플릿 헬퍼를 사용하여,

... 
<input type="text" name="Business.Email" value="<%=this.Model.Business.Email %>" /> 
... 
<input type="text" name="ContactPerson.Email" value="<%=this.Model.ContactPerson.Email %>" /> 
... 

또는 : 예를 들어, 귀하의 경우,보기는 다음과 같이 폼 요소 뭔가있을 것

... 
<%= Html.TextBoxFor(m => m.Business.Email) %> 
... 
<%= Html.TextBoxFor(m => m.ContactPerson.Email) %> 
... 

그리고 컨트롤러는 단순히 BusinessFormViewModel를 취할 것 매개 변수로 다음과 같이 입력하십시오.

public BusinessFromView(BusinessFormViewModel businessForm) 
{ 
    Business = businessForm.Business; 
    ContactPerson = businessForm.ContactPerson; 
} 
+0

MVC 2를 사용하지 않으므로 모든 입력란에 입력 요소를 만들어야한다는 의미입니까? [Bind (Prefix = ...?)와의 ​​거래는 무엇입니까? –

+0

Bind (접두어)에 익숙하지 않습니다 ... 게시 된 양식 요소는 어떻게 작성하고 있습니까? – Luke

관련 문제