4

这是我当前的视图代码:

<% 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>

我的问题:

我该怎么做呢?

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

4

3 回答 3

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"
    });

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

于 2012-03-12T21:48:29.547 回答
3
column.For(c => c.ID).Attributes(c=> new Dictionary<string, object>(){{"id", c.ID}});
于 2009-11-18T00:07:01.320 回答
1

也许呈现指定 HTML 的最佳方式是完全放弃 MVCContrib HTML.Grid,而只使用 foreach 呈现标记。

于 2009-11-18T15:40:20.160 回答