繁体   English   中英

将自定义文本添加到MVC 5的下拉列表中

[英]Add custom text to Dropdown list for MVC 5

我有一个下拉菜单,我想添加到MVC 5的_Layout.cshtml页面中。这是从数据库中的参考数据返回的-用于CarTypes。 可以选择4种不同类型的汽车模型-Saloon,4X4,Estate和Hatchback。

我创建了一个CarTypesViewModel,如下所示:

 public IEnumerable<SelectListItem> CarTypesList { get; set; }

 public string SelectedCarType { get; set; }

然后我有一个观点:

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Get))
{
    //Just a html div here perhaps?
    @Html.DropDownListFor(model => model.SelectedCarType, Model.CarTypesList)
}

在布局中,我有以下内容:

<li id="selectedcar">@Html.Action("Index", "CarTypes")</li>

然后在我的CarTypes控制器中执行以下操作:

  var model = new CarTypesViewModel 
        {
            CarTypesList= products.Select(p => new SelectListItem
            {
                Value = p.Id.ToString(CultureInfo.InvariantCulture),
                Text = p.Name
            })
        };

        return View(model);

这会将数据返回到下拉列表。 但是,我真正想要的是将值显示为“请选择您的汽车类型”作为列表中的第一项-实现此目标的最佳方法是什么,因为我不想将其存储为数据库中的值?

@Html.DropDownListFor(model => model.SelectedCarType, 
    new SelectList(Model.CarTypesList, "Value", "Text"), 
    "--- Please Select Your Car Type ---", 
    new { @class = "form-control" }
)

optionLabel参数传递给DropDownListFor

请参阅: http//msdn.microsoft.com/en-us/library/ee703561(v = vs.118).aspx

@using (Html.BeginForm("SomeAction", "SomeController", FormMethod.Get))
{
    //Just a html div here perhaps?
    @Html.DropDownListFor(model => model.SelectedCarType, Model.CarTypesList, "Please Select Your Car Type")
}

这应该做到。(将您的自定义文本添加为​​第3个元素。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM