【问题标题】:Access to a collection type in webgrid访问 webgrid 中的集合类型
【发布时间】:2014-01-15 14:20:59
【问题描述】:

我在 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ésList&lt;String&gt;。我的问题出在这一行

var liste= item.Propriétés;

我收到了这个错误:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Web.Helpers.WebGridRow' not contain the definition of 'Propriétés'
  1. 为什么会出现这个错误?
  2. 如何继续修复此错误?

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 razor webgrid


    【解决方案1】:

    您不能在模板内定义和设置变量并执行 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-05
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多