2013-10-11 4 views
2

강력하게 형식화 된보기가 있습니다. IEnumerable입니다. 내 모델의 속성 인 컬렉션에 대해 DisplayFor 도우미를 사용하려고합니다. 헬퍼는 내 모델을 반복 할 때 완벽하게 작동하지만 하위 컬렉션에 사용하려고하면 충돌이 발생합니다.일반 콜렉션에 html 도우미를 사용하는 방법은 무엇입니까?

내 첫 번째 시도는 다음과 같이 기록 하였다

@Html.DisplayFor(modelItem => 
item.Months.Where(x=>x.Equals(month)).Select(x=>x.Amount)) 

을하지만 나는이 런타임 오류가 발생했습니다 : "템플릿은 필드 액세스, 속성 액세스, 단일 차원 배열 인덱스로 사용할 수 있습니다, 또는 단일 매개 변수 사용자 지정 인덱서 식. "

public class Department 
{ 
    public string Name { get; set; } 
    public List<Month> Months { get; set; } 
} 

public class Month 
{ 
    public int number { get; set; } 
    [DataType(DataType.Currency)] 
    public decimal Amount { get; set; } 
} 
+1

:

@Html.Partial("_months", Months) 

그런 다음 부분보기는 다음과 같은 것을 할 수 있습니다. –

답변

4

당신은 Partial Views을 사용하는 것이 좋습니다 내 모델의 코드입니다

@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) @* It works perfectly here*@ 
     </td> 

     @foreach (var month in item.Months) 
     { 
      <td> 
       @month.Amount @* How can I use DisplayFor helper here ? *@ 
      </td> 
     } 

    </tr> 
} 

: 내보기의 코드입니다

. 내가 두 번째 foreach는 대신 부분 뷰를 사용해야합니다 생각

@model IEnumerable<Months> 

<table> 
    <tr> 
     <th> 
      @Html.DisplayNameFor(model => model.number) 
     </th> 
     <th> 
      @Html.DisplayNameFor(model => model.Amount) 
     </th> 
    </tr> 

@foreach (var item in Model) { 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.number) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Amount) 
     </td> 
    </tr> 
} 

</table> 
+1

방금 ​​구현했는데 완벽하게 작동했습니다. 고맙습니다. –

+0

도움이 된다니 다행입니다. 이것이 당신이 원하는 대답이라면, 그것을 받아들이는 것을 고려하십시오. –

+1

+1 좋은 답변입니다! –

3

이 시도 :

@for(int i=0; i<item.Months.Count; i++) 
{ 
    <td> 
     @Html.DisplayFor(modelItem => item.Months[i].Amount) 
    </td> 
} 
+0

문제가 해결되었지만 부분보기를 구현합니다. 어쨌든 고맙습니다. –

관련 문제