0

我正在尝试为我的 MVC 4 Razor View 创建一个简单的下拉菜单。我有一个服务类,其中包含一个返回以下内容的方法

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 });

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

我知道一个简单的编码,但我无法让它工作。

请帮忙。

谢谢。

4

2 回答 2

2

你的模型是Disability布尔属性nullable吗?

因为如果不是,则默认值为Disabilityisfalse和 this:

@Html.DropDownListFor(model => model.Disability, Model.DisabilityList)

将选择与 关联的值false,即No

于 2013-01-23T11:23:18.140 回答
0

new SelectList(_listService.YesNoList(), "Value", "Text", "");

应该是这样的

new SelectList(_listService.YesNoList(), "Value", "Text", _listService.YesNoList().First());
于 2013-01-23T11:22:12.687 回答