MVC4 .Net如何将DropDown放在WebGrid单元格中

时间:2015-02-06 17:33:29

标签: asp.net-mvc-4 webgrid

我已经看到了许多与此类似的问题,但我没有遇到一个对我有用的答案。然而:))

我的模型看起来像这样:

public class MyModel
{
    public List<MyItem> MyItems{get;set;}
    public List<SelectListItem> MySet{get;set;}
}

MyItem看起来像这样:

public class MyItem
{
    public int MyItemId
}

我的观点位于顶部@model MyModel

我的WebGrid看起来像这样:

@{
    var grid = new WebGrid( Model.MyItems, canPage: false );
        var gridColumns = new List<WebGridColumn>
        {
            grid.Column( 
                format: (item) => @Html.DropDownListFor(modelItem => item.MyItemId.ToString(), Model.MySet ) )
        };
        @grid.GetHtml( "wgtable",
            rowStyle: "gridrow",
            alternatingRowStyle: "altgridrow",
            displayHeader: true,
            columns: grid.Columns( gridColumns.ToArray( ) ) )
    }

在这种情况下,我得到的错误是CS1963:表达式树可能不包含动态操作。

我也试过

format: (item) => @Html.DropDownListFor(item.MyItemId.ToString(), Model.SubPayGroups ) )

给了我CS1973:Model没有名为&#39; DropDownListFor&#39;的适用方法。

我甚至关闭了吗?

1 个答案:

答案 0 :(得分:3)

我最终离开DropDownListFor,使用DropDownList代替,还构建了一个IEnumerable:这是我对该列的最终工作解决方案:

    grid.Column(
        header:"Sub Pay Group",
        format: (item) => @Html.DropDownList("MyItemId", Model.MySet.Select( u => new SelectListItem
        {
            Text = u.Text,
            Value = u.Value,
            Selected = u.Value == ((WebGridRow)item)["SubPayGroupId"].ToString() }),

这不是我最初的问题定义,但我还需要设置一个选定的项目。因此,附加从MySet中选择...