2013-03-06 90 views
0

我有一个表,我用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相当混乱,虽然。

回答

0

这有效,所以我在这里停下来并将其标记为答案。但是,如果有更好的方法来解决这个问题,我很乐意听到他们。

format: @<text>@Html.DisplayFor(x => (item as WebGridRow)["ChangeId"], "DisplayAny")</text> 

DisplayTemplate是必需的;否则,这不会显示。