2012-05-22 2 views
0

면도날보기에서 약 5 개의 다른 시간을 복사하여 붙여 넣은 다음 코드 블록이 있습니다. 기본적으로 동일한 모델에 대한 테이블을 다른 데이터로 표시합니다.HTML mvc3 면도기 뷰에서 재개 가능한 함수를 만드는 도우미?

html 도우미 또는 lambda func로 다시 쓰면 뷰에 전달 된 n 개의 다른 모델에 다시 사용할 수 있습니까?

// Example for Model.A and Model.B 

    var cCols = new[] { "val1", "val2"}; 

    // Display the data for A 
    <div class="group-property"> 
    <div class="group-label">Title A</div>   
     <table class="collection-table"> 
     <thead> 
     <tr class="collection-head">@foreach (var col in cCols) {<th scope="col">@col</th>}</tr> 
     </thead> 
     <tbody> 
      @foreach (var item in Model.A) 
      { 
       <td>@item.val1</td> 
       <td>@item.val2</td> 
      } 
     </tbody> 
     </table> 
    </div> 

    // Display the data for B 
    <div class="group-property"> 
    <div class="group-label">Title B</div>   
     <table class="collection-table"> 
     <thead> 
     <tr class="collection-head">@foreach (var col in cCols) {<th scope="col">@col</th>}</tr> 
     </thead> 
     <tbody> 
      @foreach (var item in Model.B) 
      { 
       <td>@item.val1</td> 
       <td>@item.val2</td> 
      } 
     </tbody> 
     </table> 
    </div> 

답변

1

내가 무엇을 시도했다 모르겠지만, 당신이 단지 다를 조각을 가지고 함수에 그들에게 매개 변수를 만들 필요가 도우미 함수 만들기 위해 :

@helper MyHelperFunction(string title, IEnumerable<ItemClass> items) 
{ 
var cCols = new[] { "val1", "val2"}; 

<div class="group-property"> 
<div class="group-label">@title</div>   
    <table class="collection-table"> 
    <thead> 
    <tr class="collection-head">@foreach (var col in cCols) {<th scope="col">@col</th>}</tr> 
    </thead> 
    <tbody> 
     @foreach (var item in items) 
     { 
      <td>@item.val1</td> 
      <td>@item.val2</td> 
     } 
    </tbody> 
    </table> 
</div> 
} 

@MyHelperFunction("Title A", Model.A) 
@MyHelperFunction("Title B", Model.B) 
+0

굉장! 감사! – JaJ

2

내가 그것을 제대로 알고 있지만 왜 안 @ Html.Partial를 사용하지 않는?

안드레이 네 아구

+0

이것은 티어 오프 솔루션이므로 별도의 .cshtml 파일로 부분보기를 추가하고 싶지 않습니다. 차라리 모든 .cshtml보기를 유지하고 싶습니다. – JaJ

관련 문제