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...