C# mvc webgrid中的Html.DisplayFor

C# mvc webgrid中的Html.DisplayFor,c#,asp.net-mvc-3,razor,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>) grid.Column(“Roller”,“Roller”,canSort:true,格式:@@Html.DisplayFo

使用asp.net mvc webgrid,是否可以使用Html.DisplayFor为当前行/列呈现列

    grid.Column("Roller", "Roller", canSort: true, format: @<text>@Html.DisplayFor( <the row result here> )</text>)
grid.Column(“Roller”,“Roller”,canSort:true,格式:@@Html.DisplayFor())
DisplayFor(m)助手使用页面模型,而不是当前行项目。有办法解决这个问题吗

谢谢

//约翰试试这个

var grid = new WebGrid(Model);

grid.Column("Roller", "Roller", canSort: true, format: @<text>@Html.DisplayFor(modelItem => item.blabla)</text>)
grid.Column(“Roller”,“Roller”,canSort:true,格式:@@Html.DisplayFor(modeleItem=>item.blabla))
使用item.blabla“不管你的物品名是什么”可能会有用,但我对此并没有真正的经验

两者之间也没有太大区别

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

@@item.blabla

这两种用法都起作用。

是的,这是可能的。例如,考虑将“代码>横幅< /代码>对象的列表绑定到您的WebGrand。还要考虑<代码>横幅。Active < /Cord>属性,它是一个希望被呈现为复选框的<代码>布尔值< /代码>值。您可以这样做:

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)

<>但是我认为第一个选项更可读。

如果你有显示属性应用到这个属性或者model@m.t.bennett是的,你是对的,这是一个不容易看到的小变化。
format: (item) => Html.DisplayFor(modelItem => ((item as WebGridRow).Value as Banner).Active)