0

かみそりビュー内で約5回コピーして貼り付けた次のコードブロックがあります。基本的に、同じモデルのテーブルを異なるデータで表示します。

ビューに渡されるn個の異なるモデルで再利用できるように、htmlヘルパーまたはラムダ関数として書き直すにはどうすればよいですか?

  // 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>
4

2 に答える 2

2

うまくいくかどうかわかりませんが、 @Html.Partial を使用しないのはなぜですか?

アンドレイ・ネアグ

于 2012-05-22T21:37:59.613 に答える
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)
于 2012-05-23T03:26:19.807 に答える