0

我有以下代码块,在剃刀视图中复制并粘贴了大约 5 次不同的时间。它基本上显示了相同模型的表格,只是具有不同的数据。

如何将它重写为 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>
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 回答