包括默认"选择选项"在MVC Html.DropDownListFor中

时间:2014-08-10 21:37:11

标签: c# asp.net-mvc

我的模型包含IEnumerable<SelectListItem>,而视图包含一个DropDownListFor可以正常工作,但我需要包含默认值&#34;选择一个选项&#34;在某些情况下值为-1。

在控制器中:

model.Items = _context.SomeTable.Select(m => new SelectListItem()
{
    Text = m.SomeName,
    Value = m.SomeId
});

在视图中:

@Html.DropDownListFor(
    w => Model.ItemId,
    new SelectList(Model.Items, "Value", "Text", Model.ItemId),
    new { @class = "form-control text-left" })

在Controller或View之间,如何添加以下作为第一个选项并有条件地选择(如果ItemId == -1)?

<option value="Select an Item">Select an Item</option>

由于确定当前是否选择了当前选项的逻辑是在Controller中,我更愿意在Controller中添加它 - 如果可能的话。或者,如果我可以在视图中添加<option ...并在Controller传递-1时选择也可以使用的ItemId。

2 个答案:

答案 0 :(得分:1)

要添加默认项目,您可以尝试

model.Items.Insert(0, new SelectListItem { Text = "Please Select", Value = "-1" });

这会将项目推送到选择列表的顶部。拨打电话后执行此操作

model.Items = _context.SomeTable.Select(m => new SelectListItem()
{
    Text = m.SomeName,
    Value = m.SomeId
}).ToList();

您添加对ToList()的呼叫非常重要,这样您就可以使用预计的项目列表,而不仅仅是枚举器。

答案 1 :(得分:1)

DropDownListFor&#39;覆盖&#39; DropDownListFor&#39;需要一个&#39; optionLabel&#39;作为一个论点

@Html.DropdownListFor(m => m.id, "select one", Model.selectList, new {})

您可能想要检查它为该选项生成的值。我认为它是0或-1