Dan*_*tos 6 c# asp.net asp.net-mvc razor displayfor
如何使用属性显示名称DisplayNameFor()来构建表头.例如:
@model IEnumerable<Item>
<table class="table">
<thead>
<tr>
<td>@Html.DisplayNameFor(? => ?.prop1)</td>
<td>@Html.DisplayNameFor(? => ?.prop2)</td>
<td>@Html.DisplayNameFor(? => ?.prop3)</td>
</tr>
</thead>
<tbody>
@foreach (Item item in Model) {
<tr>
<td>@Html.DisplayFor(i => item.prop1)</td>
<td>@Html.DisplayFor(i => item.prop2)</td>
<td>@Html.DisplayFor(i => item.prop3)</td>
</tr>
}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
我应该在问号上写什么?
小智 9
DisplayNameFor()有一个超载,接受IEnumerable<T>所以它只需要
<td>@Html.DisplayNameFor(m => m.prop1)</td>
Run Code Online (Sandbox Code Playgroud)
请注意,这仅适用于模型所在的位置Enumerable<T>(在您的情况下@model IEnumerable<Item>).
但如果模型是一个包含一个原型的对象,它将不起作用IEnumerable<T>.
例如,以下内容不起作用
<td>@Html.DisplayNameFor(m => m.MyCollection.prop1)</td>
Run Code Online (Sandbox Code Playgroud)
它需要
<td>@Html.DisplayNameFor(m => m.MyCollection.FirstOrDefault().prop1)</td>
Run Code Online (Sandbox Code Playgroud)
即使集合中不包含任何项目,它也会起作用.
附注:在某些情况下,您最初可能会收到剃刀错误,但您可以忽略它.运行应用程序后,该错误将消失.
| 归档时间: |
|
| 查看次数: |
2706 次 |
| 最近记录: |