Mvc DropdownList由ViewBag默认选择的值

时间:2019-01-10 14:05:02

标签: asp.net-mvc asp.net-mvc-5

我已经填充了一个视图包,并向其绑定了一个下拉列表。如下所示。

var countrylist = ctx.Countries.ToList();
ViewBag.countrylist = new SelectList(countrylist, "ID", "Name",2);

@Html.DropDownList("countrylist", (IEnumerable<SelectListItem>)ViewBag.countrylist, "-Select-")

以上,我想默认选择国家列表的第二项,因此我提到了值“ 2”作为ViewBag国家列表重载的最后一个参数。 但这不是默认情况下选择的项目。

但是,如果我将下拉列表名称更改为下面的其他名称

@Html.DropDownList("countrylist12345", (IEnumerable<SelectListItem>)ViewBag.countrylist, "-Select-")

然后默认情况下,它将在国家/地区列表中选择第二项。

请解释为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

您的整个视图很可能带有某些模型的强类型

@model YourNamespace.SomeModel

此模型的字段countrylist具有一些值,默认情况下可能为0。并且由于此字段的名称与下拉列表本身的名称相同,因此此字段的值就是下拉列表用来确定默认选择的内容。更改下拉菜单的名称后,连接就消失了。

您可以做的是确保在countrylist字段中为该用于强力键入视图的模型分配了一些值。例如,在控制器内部:

SomeModel model = new SomeModel();
model.countrylist = 2;
return View(model);