这个SelectList有什么问题?

时间:2013-01-23 11:08:40

标签: asp.net-mvc-3 razor asp.net-mvc-4

我正在尝试为我的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 });

但仍选择“否”作为选定选项。

我知道一点简单的编码,但我无法正常工作。

请帮忙。

感谢。

2 个答案:

答案 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());