mvc webgrid中的Html.DisplayFor

时间:2011-07-08 12:41:38

标签: c# asp.net-mvc-3 razor

使用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

2 个答案:

答案 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>

两种用法都可以完成这项工作。