2011-04-11 2 views
1

사용자 개체를 모델로 사용하는 부분 템플릿이 있습니다. 사용자는 계정 모음을 가지고 있습니다. 이 부분 템플릿에는 다음과 같은 루프가 있습니다. _account 부분 템플릿은 내가 처음 ASP.Net MVC3 부모 자식 모델 바인딩

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult UserDetails(User user, string actionType) 

을 시도 내 컨트롤러 방법에서 Account 클래스

@foreach (var item in Model.Accounts) 
      { 
       <tr> 
        <td colspan="6"> 
         <div> 
          @Html.Partial("_Account", item) 
         </div> 
        </td> 
       </tr> 

      } 

에 바인딩하지만에 user.accounts 수집은 비어 있습니다. 그런 다음 나는 이것을 시도했다. 여전히 계정 모음은 비어 있습니다.

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult UserDetails(User user, 
          [Bind(Prefix="User.Accounts")] 
          FixupCollection<Account> Accounts, 
          string actionType) 

기본 Modelbinder 구현을 사용하여이 작업을 수행 할 수 있습니까? 아니면 다른 작업을해야합니까?

답변

4

그래, 기본 모델 바인더를 사용할 수 있습니다. 필드의 이름을 올바르게 지정하기 만하면됩니다. 따라서 다음과 같은 결과를 출력하려면 루프가 필요합니다.

... 
<input type="text" name="user.Accounts[0].SomeTextField" /> 
<input type="text" name="user.Accounts[0].SomeOtherTextField" /> 
... 
<input type="text" name="user.Accounts[1].SomeTextField" /> 
<input type="text" name="user.Accounts[1].SomeOtherTextField" /> 
... 

계정을 추가/제거해야하는 경우 하드 코드 된 색인이 조금 복잡해집니다. 다시 게시하기 전에 자바 스크립트를 사용하여 이름을 다시 지정할 수 있습니다. 그러나 모든 것이 가능합니다. 이 질문에 바인딩 모델에 자세한 내용을 제공하지 :

ASP.NET MVC: Binding a Complex Type to a Select

+0

을 :이 찾을 만 문제는 HTML에서 클래스 이름을 노출하는 것입니다. –

관련 문제