WebGrid格式不输出任何东西
问题描述:
我有一个表,我用MVC 4(Razor)中的foreach循环构建,我试图将它转换为WebGrid以利用排序。目前,我只是试图让format
参数为我工作,以便我可以根据需要重新创建列。下面是一个简单的例子,我不能去上班:WebGrid格式不输出任何东西
grid.Column(
columnName: "ChangeId",
format: (item) => @Html.DisplayFor(m => (item as ChangeStateViewModel).ChangeId)
)
这没什么输出渲染期间:
<td></td>
我在做什么错?我试过删除(item) =>
并使用<text>...</text>
,但那也不显示我的价值。
EDIT
如果我将其更改为以下,如所提到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相当混乱,虽然。
答
这有效,所以我在这里停下来并将其标记为答案。但是,如果有更好的方法来解决这个问题,我很乐意听到他们。
format: @<text>@Html.DisplayFor(x => (item as WebGridRow)["ChangeId"], "DisplayAny")</text>
DisplayTemplate是必需的;否则,这不会显示。