MVC3 WebGrid - 动态创建列(foreach?)

pfe*_*eds 2 webgrid asp.net-mvc-3

我想创建一个WebGrid,其中包含基于集合的列,例如List.像这样的东西(显然不起作用):

@grid.GetHtml(
  columns: grid.Columns(
    @foreach (var column in Model.ListOfColumns) {
       grid.Column(column.Name, column.Title);
    }
  )
)          
Run Code Online (Sandbox Code Playgroud)

任何聪明的想法?

Rin*_*ong 8

您可以像下面一样ViewBag.

控制器:

        List<WebGridColumn> columns = new List<WebGridColumn>();
        columns.Add(new WebGridColumn() { ColumnName = "Id", Header = "Id" });
        columns.Add(new WebGridColumn() { ColumnName = "Name", Header = "Name" });
        columns.Add(new WebGridColumn() { ColumnName = "Location", Header = "Location" });
        columns.Add(new WebGridColumn() { Format = (item) => { return new HtmlString(string.Format("<a href= {0}>View</a>", Url.Action("Edit", "Edit", new { Id = item.Id }))); } });
        ViewBag.Columns = columns;
Run Code Online (Sandbox Code Playgroud)

视图:

   @grid.GetHtml(tableStyle: "ui-widget ui-widget-content",
                      headerStyle: "ui-widget-header",
                      columns: ViewBag.Columns
                     )
Run Code Online (Sandbox Code Playgroud)