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>)
))