mvc下拉列表?

时间:2013-09-23 13:36:23

标签: c# asp.net-mvc asp.net-mvc-3 selectlistitem

IEnumerable<DeliveryRunRecord> deliveries = _deliveryRunService.GetAll();
List<SelectListItem> listOfDeliveryRuns = deliveries.Select(x => new SelectListItem
            {
                Value = x.Id.ToString(),
                Text = x.Name,
                Selected = "Select".ToString()
            }).ToList();

希望在选择下拉菜单之前显示“选择”,但在点击时不会显示,只允许用户选择交付中的值?

3 个答案:

答案 0 :(得分:0)

我认为您需要另一个默认选择项目,如下所示:

(此方法需要包含System.Linq命名空间)

SelectListItem defaultItem = new SelectListItem 
{ 
    Selected = true, 
    Text = "Select", 
    Value = "NONE" 
};
List<SelectListItem> listOfDeliveryRuns = deliveries
    .Select(x => new SelectListItem
    {
        Value = x.Id.ToString(),
        Text = x.Name,
        Selected = false
    })
    .ToList()
    .Insert(0, defaultItem);

答案 1 :(得分:0)

您可能也可以在.cshtml中执行您要求的操作。

@Html.DropDownList("DeliveryId", new SelectList(ViewBag.deliveries as System.Collections.IEnumerable, "Key", "Value"), "--Select--")

上面将显示下拉列表,其中“--Select--”作为默认选择的项目。我刚刚复制了一个使用带有项值的Dictionary的示例,并通过ViewBag作为参数传入。

答案 2 :(得分:0)

SelectListItem的

Selected Property是布尔类型,因此您不能指定字符串,它应该是false或true。

但是您想要实现的目标可以在视图上完成。  @ Html.DropDownList(&#34; dropdown1&#34;,新的SelectList(ViewBag.deliveries,&#34; Value&#34;,&#34; Text&#34;, 0 ),& #34;请选择&#34;,new {onchange =&#34; form.submit();&#34;})

注意DropDownList方法的第四个参数,它

我希望这会有所帮助。