2015-10-06 76 views
0

我有動態欄,寫動感的風格,但我收到一個錯誤:不能使用lambda表達式

CS1977 C# Cannot use a lambda expression as an argument to a dynamically dispatched operation without first casting it to a delegate or expression tree type.

查看:

WebGrid grid = new WebGrid(Model); 
    List<WebGridColumn> columnsL = new List<WebGridColumn>(); 

    for (int i = 0; i < Model.First().Data.Count; i++) 
    { 
     int local = i; 
     columnsL.Add(grid.Column(Model.First().Data[i].Name, Model.First().Data[i].Label,format: item => new MvcHtmlString("<text>" + item.Data[local].Value +"</text>") 
    )); 
    } 


@grid.GetHtml(tableStyle: "table table-striped table-bordered", columns: columnsL) 
+9

你爲什麼要寫這樣的代碼行?這很可怕。 [「任何傻瓜都可以編寫計算機可以理解的代碼。好的程序員編寫人類可以理解的代碼」](http://stackoverflow.com/a/522907/542251) – Liam

+0

因爲我正在編寫框架,所以我必須寫動態。 – bgmm

+0

完全可以編寫可讀的動態代碼。 – Liam

回答

0

我找到了解決辦法。如果你想在ASP動態的WebGrid! .NET MVC 5 ,您可以查看使用此代碼

 @{ 
      WebGrid grid = new WebGrid(Model); 
      List<WebGridColumn> columnsL = new List<WebGridColumn>(); 
    foreach (ServiceReference1.Column col in ViewBag.ColumnList) 
      { 
       WebGridColumn c = new WebGridColumn(); 
       c.ColumnName = col.columnName; 
       c.Header = col.columnCaptionValue; 
       c.Format = (item) => @Html.Raw("<div style='word-wrap:hyphenate;height:30px;min-width:" + col.columnWidth + "px'><b style='background-color:palevioletred'>" + item[col.columnName] + "</b></div>"); 

       columnsL.Add(c); 
      } 
} 
    <div class="test" style="overflow: scroll;"> 
      <div style="width:1000px"> 
     @grid.GetHtml(tableStyle: "table table-striped table-bordered", columns: columnsL, caption: ViewBag.GridHeader, headerStyle: "gvHeading") 
      </div> 
     </div> 

我的問題是item,但我解決了item[col.columnName]。它現在的作品