2013-03-06 143 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是必需的;否則,這不會顯示。