2011-07-08 70 views
4

使用asp.net mvc webgrid,是否可以使用Html.DisplayFor爲當前行/列渲染列?Html.DisplayFor in mvc webgrid

grid.Column("Roller", "Roller", canSort: true, format: @<text>@Html.DisplayFor(<the row result here>)</text>) 

Html.DisplayFor(m)助手使用頁面模型,而不是當前行項目。有沒有解決的辦法。

感謝

//約翰

回答

4

是的,這是可能的。舉個例子,假設你將一個Banner對象列表綁定到你的WebGrid。還要考慮Banner.Active屬性,它是您想要呈現爲CheckBox的boolean值。你可以這樣做:

format: (item) => { var banner = item.Value as Banner; 
        return Html.DisplayFor(modelItem => banner.Active); 
        } 

你也可以這樣做:

format: (item) => Html.DisplayFor(modelItem => ((item as WebGridRow).Value as Banner).Active) 

不過,我會考慮的第一個選項更易讀。

-1

試試這個

var grid = new WebGrid(Model); 

不是做

grid.Column("Roller", "Roller", canSort: true, format: @<text>@Html.DisplayFor(modelItem => item.blabla)</text>) 

使用item.blabla 「無論烏爾項目名稱是」 可以工作,但林不真的很有經驗。

也沒有太大的區別

之間

@<text>@Html.DisplayFor(modelItem => item.blabla)</text> 

&

@<text>@item.blabla</text> 
都使用做這項工作。

+1

有,如果你有顯示屬性被應用到屬性或模型 –

+0

@ m.t.bennett你是對的,這是一個小變化,這是不容易看到。 –