这是我当前的观看代码:
<% 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>
我的问题:
我该怎么做?
我考虑了'属性'扩展方法,但我不确定如何使其工作。
答案 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渲染标记。