【发布时间】:2013-03-06 17:03:15
【问题描述】:
我有一个在 MVC 4 (Razor) 中使用 foreach 循环构建的表,我正在尝试将其转换为 WebGrid 以利用排序。目前,我只是想让format 参数为我工作,以便我可以根据需要重新创建列。这是一个我无法开始工作的简单示例:
grid.Column(
columnName: "ChangeId",
format: (item) => @Html.DisplayFor(m => (item as ChangeStateViewModel).ChangeId)
)
这在渲染过程中不输出任何内容:
<td></td>
我做错了什么?我试过删除(item) => 并使用<text>...</text>,但这也没有显示我的价值。
编辑
如果我将其更改为以下内容,如 here 所述,它确实显示项目中的所有属性;然而,从那里开始建设只会让我回到原来的位置。
format: @<text>@Html.DisplayFor(x => item)</text>
EDIT2
format: @<text>@item.ChangeId</text>
当然可以,但我无法提供 DisplayTemplate。
EDIT3
看起来(item as ChangeStateViewModel).ChangeId 给了我NULL.. 但为什么呢?如果我只使用@item.ChangeId,它就很有价值。
EDIT4
看起来提供的默认项(当您使用 @<text>...</text> 时)是 System.Web.Helpers.WebGridRow,这就是 EDIT3 提供它所做的行为的原因。像下面这样的东西会起作用,但前提是你将它发送到 DisplayTemplate;出于某种原因,如果您删除了 , "DisplayAny" 部分,它将不会显示。
format: @<text>@Html.DisplayFor(x => (item as WebGridRow)["ChangeId"], "DisplayAny")</text>
这确实让 EDIT2 相当混乱。
【问题讨论】:
标签: razor asp.net-mvc-4 webgrid