MVC4 .Net Как разместить DropDown в ячейке 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: Модель не имеет применимого метода с именем DropDownListFor.

Я даже близко?

1 ответ

Решение

Я закончил тем, что отошел от 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() }),

Это не было в моем первоначальном определении проблемы, но мне также нужно было установить выбранный элемент. Таким образом, дополнительный Select from MySet...

Другие вопросы по тегам