@ Html.DropDownList()占位符为禁用和选中

ras*_*hed 1 c# asp.net-mvc asp.net-mvc-5

如果我使用@Html.DropDownList()带静态值,则可以创建占位符作为第一个选项,并且可以在此选项上应用"禁用"和"已选择"属性,如下所示

@Html.DropDownList("month", new List<SelectListItem>
{
    new SelectListItem{ Text="Select Month", Value = "0" , Disabled = true, Selected = true},
    new SelectListItem{ Text="January", Value = "1" },
    new SelectListItem{ Text="February", Value = "2" },
    new SelectListItem{ Text="March", Value = "3" },
    new SelectListItem{ Text="April", Value = "4" },
    new SelectListItem{ Text="May", Value = "5" },
    new SelectListItem{ Text="June", Value = "6" },
    new SelectListItem{ Text="July", Value = "7" },
    new SelectListItem{ Text="August", Value = "8" },
    new SelectListItem{ Text="September", Value = "9" },
    new SelectListItem{ Text="October", Value = "10" },
    new SelectListItem{ Text="November", Value = "11" },
    new SelectListItem{ Text="December", Value = "12" },
}, new {@class = "form-control"})
Run Code Online (Sandbox Code Playgroud)

但是,如果我创建下拉列表,如数字范围,并制作这样的地方持有人:

@Html.DropDownList("year", 
      Enumerable.Range(1900, 200)
          .Select(i => new SelectListItem { Text = i.ToString(), Value = i.ToString() }), 
      "Please Select Year", new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)

是否可以将此Please Select Year禁用和选中?

这是第一个下拉列表的输出,其中第一个选项是Disabled

我想要这个请选择年份为已禁用

And*_*rei 6

请注意,您用于year下拉的过载使您无法控制默认项​​目外观.

但是,您可以使用相同的方法恢复您使用的相同方法,只需要一小段代码:

@{
    var years = new List<SelectListItem>{
        new SelectListItem{ Text="Select Year", Value = "0" , Disabled = true, Selected = true},
    };

    years.AddRange(Enumerable.Range(1900, 200)
          .Select(i => new SelectListItem { Text = i.ToString(), Value = i.ToString() }));
}

@Html.DropDownList("year", 
      years, 
      new { @class = "form-control" })
Run Code Online (Sandbox Code Playgroud)