我正在尝试在我的Razor视图中使用WebGrid,但我收到此错误消息:
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而不是控制器。我在网上搜索,有几个样本以相同的方式,但我仍然收到此错误。我很感激任何帮助或想法。
答案 0 :(得分:1)
当您将WebGrid放在ViewBag中时,它就变成了一个动态对象,并且它们不支持表示为lambda表达式的委托。如果您不想使用强类型视图,则在ViewBag中传递数据,但在视图中构建网格,或者在视图中将网格转换为正确的类型。
答案 1 :(得分:0)
从ViewBag中转换结果会将网格变量从动态类型更改为正确的类型。然后你应该像以前一样使用它。
@{
var grid = (WebGrid)ViewBag.grid;
}
@grid.GetHtml("tblMain",
columns: grid.Columns(
grid.Column("Name", format: @<Text>Test</Text>)
))