WebGridColumns 在模型中的工作方式不同

WebGridColumns working differently in Model

我想制作动态的 WebGridColumns。它在我的 cshtml 页面中运行良好,但是当我将它移至模型时出现错误:

The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string, string, System.Func<dynamic,object>,string,bool)' has some invalid arguments

这是我的模型,请注意,我只是从 cshtml 文件中复制了工作代码。

public IHtmlString CreateTable(String name)
{
  ...
  WebGrid grid = new WebGrid(source: data, ajaxUpdateContainerId: name); 
  List<WebGridColumn> cols = new List<WebGridColumn>();
  foreach (var c in grid.ColumnNames)
  {
    cols.Add(grid.Column(c, c, format: @<text><span id="@c">@item[c]</span></text>, style: ""));
  }
  return grid.GetHtml();
}

所以错误发生在 cols.Add( 之后,然后出现了一堆不同的错误,就好像我没有关闭括号之类的。

创建 WebGridColumn 的要求是否从视图更改为模型?

在多次失败的尝试和奇怪的错误之后,这终于奏效了:

cols.Add(grid.Column(c, c, 
    item => 
    { 
        HtmlString h = new HtmlString("<span id=\"" + c + "\">" + item[c] + "</span>"); 
        return h; 
    },
    "", true));

甚至这也是从许多不同的来源串在一起的,我不知道从哪里开始引用它们。

看来我在这里做的事情本质上是错误的,就像我通过圆形击打方形钉子一样,所以我不会立即将其标记为答案。如果你能帮助我理解为什么或我应该做些什么,我会把功劳归功于你。