MVCContrib,Html.Grid:如何将基于行的id附加到td标记?

时间:2009-11-17 21:58:25

标签: asp.net-mvc attributes grid mvccontrib

这是我当前的观看代码:

<% Html.Grid((List<ColumnDefinition>)ViewData["Parameters"])
    .Columns(column =>
        {
            column.For(c => c.ID);
            column.For(c => c.Name);
        }).Render();
%>

我想将HTML“id”属性附加到每个“name”td标记中:

<table class="grid">
  <thead>
    <tr>
      <th>Id</th>
      <th>Name</th>
    </tr>
  </thead>
  <tbody>
    <tr class="gridrow">
      <td>1</td>
      <td id="parameter_1">Address</td>
    </tr>
    <tr class="gridrow_alternate">
      <td>2</td>
      <td id="parameter_2">Phone Number</td>
    </tr>
  </tbody>
</table>

我的问题:

  

我该怎么做?

我考虑了'属性'扩展方法,但我不确定如何使其工作。

3 个答案:

答案 0 :(得分:4)

语法相当奇怪,但 工作。乔希的回答是正确的。这是完整的答案,使用我当前项目中的一行。这包括使用多个属性的语法:

col.For(ts => ts.Subtitle.Abbreviation)
    .Named("Subtitle<br />Language")
    .Attributes(x => new Dictionary<string, object>()
    {                                         // { "name", "value" }; results in:
        { "title", x.Item.Subtitle.Text },    // title="someLanguage"
        { "class", "someCssClass" },          // class="someCssClass"
        { "id", "someIdOrOther' }             // id="someIdOrOther"
    });

您可以根据需要包含任意数量的名称 - 值对。如果您需要使用该行对象中的数据,每个人都可以访问上述示例中的lambda变量.Item上的x属性。

答案 1 :(得分:3)

column.For(c => c.ID).Attributes(c=> new Dictionary<string, object>(){{"id", c.ID}});

答案 2 :(得分:1)

渲染指定HTML的最佳方法可能是完全放弃MVCContrib HTML.Grid,只使用foreach渲染标记。