我正在尝试为我的MVC 4 Razor View创建一个简单的下拉菜单。我有一个Service Class,其中包含一个返回以下内容的方法
public List<SelectListItem> YesNoList()
{
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "Select", Value = "" });
items.Add(new SelectListItem { Text = "Yes", Value = "True" });
items.Add(new SelectListItem { Text = "No", Value = "False" });
return items;
}
我在控制器中调用此服务方法
[AllowAnonymous]
public ActionResult Register()
{
RegisterModel model = new RegisterModel();
model.DisabilityList = new SelectList(_listService.YesNoList(), "Value", "Text", "");
return View(model);
}
然后将其返回我的Razor View
<div class="editor-label">
@Html.LabelFor(model => model.Disability, "Do you have a disability?")
</div>
<div class="editor-field">
@Html.DropDownListFor(model => model.Disability, Model.DisabilityList)
</div>
我希望名为“选择”的项目成为我的下拉菜单中的选定选项,但默认情况下它总是选择“否”选项。这是为什么?
我尝试将SelectListItem更改为此
items.Add(new SelectListItem { Text = "Select", Value = "", Selected = True });
但仍选择“否”作为选定选项。
我知道一点简单的编码,但我无法正常工作。
请帮忙。
感谢。
答案 0 :(得分:2)
您的模型Disability
布尔属性nullable
?
因为如果没有,则Disability
的默认值为false
,而且:
@Html.DropDownListFor(model => model.Disability, Model.DisabilityList)
将选择与false
相关联的值,即No
。
答案 1 :(得分:0)
此
new SelectList(_listService.YesNoList(), "Value", "Text", "");
应该是这样的
new SelectList(_listService.YesNoList(), "Value", "Text", _listService.YesNoList().First());