2014-01-15 4 views
0

Я использовал webgrid в приложении 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>) 

                            ) 
                        ); 
} 

Модель этой точки зрения содержит List<String> называется Свойства проблема .My в этой строке

var liste= item.Propriétés; 

Я получил эту ошибку:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Web.Helpers.WebGridRow' not contain the definition of 'Propriétés' 
  1. Зачем возникает эта ошибка?
  2. Как я могу исправить эту ошибку?

ответ

2

Вы не можете определить и установить переменную и исключить цикл foreach внутри шаблона.

То, что вы должны сделать, это создать HTML-помощника, и использовать его в шаблоне:

определить его в файле бритвой, прежде чем использовать его в 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> 
Смежные вопросы