使用asp.net mvc webgrid,是否可以使用Html.DisplayFor为当前行/列呈现列?
grid.Column("Roller", "Roller", canSort: true, format: @<text>@Html.DisplayFor( <the row result here> )</text>)
Html.DisplayFor(m)帮助程序使用页面模型,而不是当前行项目。有没有办法解决这个问题。
由于
// Johan
答案 0 :(得分:4)
是的,有可能。例如,考虑将Banner
对象列表绑定到WebGrid。还要考虑Banner.Active
属性,它是一个boolean
值,您希望将其呈现为CheckBox。你可以这样做:
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 :(得分:-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>
两种用法都可以完成这项工作。