MVC4 Razor WebGrid错误

时间:2012-08-08 20:36:14

标签: asp.net-mvc razor webgrid

我正在尝试在我的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而不是控制器。我在网上搜索,有几个样本以相同的方式,但我仍然收到此错误。我很感激任何帮助或想法。

2 个答案:

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