MVC4 Razor WebGrid Ошибка

Я пытаюсь использовать WebGrid в моих представлениях Razor, но получаю следующее сообщение об ошибке:

Compiler Error Message: CS1978: Cannot use an expression of type 
'lambda expression' as an argument to a dynamically dispatched operation

Вот код контроллера:

  var query = GetAll().ToList();
  ViewBag.grid = new WebGrid(students, rowsPerPage: 20);
  return View();

Вид:

@{
    var grid = ViewBag.grid;
}
@grid.GetHtml("tblMain",
    columns: grid.Columns(
            grid.Column("Name", format: @<Text>Test</Text>)
        ))

Я смог использовать webgrid на моем контроллере, генерировать HTML и визуализировать его, но поскольку мне нужны шаблоны, я попытался создать webgrid, а не контроллер. Я искал в Интернете, там есть несколько образцов таким же образом, но я все еще получаю эту ошибку. Буду признателен за любую помощь или идею.

2 ответа

Как бы вы ни поместили свою WebGrid в ViewBag, она стала динамическим объектом, и те не поддерживают делегаты, представленные как лямбда-выражения. Передайте данные в ViewBag, если вы не хотите использовать строго типизированное представление, но создаете сетку в представлении или приводите сетку к нужному типу в представлении.

Преобразование результата из ViewBag изменит переменную сетки с динамического типа на правильный тип. После этого вы сможете использовать его так же, как раньше.

@{
    var grid = (WebGrid)ViewBag.grid;
}
@grid.GetHtml("tblMain",
    columns: grid.Columns(
            grid.Column("Name", format: @<Text>Test</Text>)
        ))
Другие вопросы по тегам