我在asp.net mvc4应用程序中使用了webgrid
@if( @Model.Count > 0){
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 5);
grid.Pager(WebGridPagerModes.All);
@grid.GetHtml(
tableStyle: "table_data",
headerStyle: "table_header",
columns: grid.Columns(
grid.Column("Concept technique", "Concept technique", canSort: false, format: @<label>@Html.Raw(@item.Concept)</label>),
grid.Column("Propriétés", "Propriétés", canSort: false, format: @<span>@{
var liste= item.Propriétés;
foreach (var s in liste){@s}}</span>),
grid.Column("Catégorie", "Catégorie", canSort: false, format: @<label>@Html.Raw(@item.Catégorie)</label>)
)
);
}
此视图的模型包含一个名为Propriétés的List<String>
。我的问题在于此行
var liste= item.Propriétés;
我收到了这个错误:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Web.Helpers.WebGridRow' not contain the definition of 'Propriétés'
答案 0 :(得分:2)
您无法定义和设置变量,也不能在模板中使用foreach循环。
您需要做的是创建一个html帮助器,并在模板中使用它:
在razor文件中定义它,然后在webgrid中使用它:
@helper Propriétés(List<string> propriétés)
{
foreach (var p in propriétés)
{
<span>p</span>
}
}
在webGrid列模板中使用它:
format: <text>@Propriétés(@item.Propriétés)</text>