Html.Dropdownlist选中的值不起作用

时间:2014-06-02 17:35:33

标签: asp.net-mvc html.dropdownlistfor selected

在我的项目中,Html.DropdownList无法显示其选定的值。它显示列表的初始值。我的控制器和视图代码如下:

控制器:

public ActionResult Edit(int id = 0)
    {
        PERMISSION permission = permissionManager.Find(id);
        ViewBag.MODULE_ID = new SelectList(moduleManager.GetAll(), "ID", "TITLE",permission.MODULE_ID);
        return View(permission);
    }

查看:

@Html.DropDownList("MODULE_ID", (IEnumerable<SelectListItem>)@ViewBag.MODULE_ID, new { @class = "form-control" })

但如果我写:

@Html.DropDownList("MODULE_ID", String.Empty)

它工作正常。但我必须添加class =&#34; form-control&#34;。应该解决什么问题?
更新:
我已将ViewBag名称从ViewBag.MODULE_ID更改为 ViewBag.ModuleList 。它可能与下拉列表的名称冲突。现在它工作正常。

2 个答案:

答案 0 :(得分:3)

我已将ViewBag名称从ViewBag.MODULE_ID更改为ViewBag.ModuleList。它可能与下拉列表的名称冲突。现在它工作正常。

答案 1 :(得分:0)

您正在错误的参数中添加form-control类。目前它被添加为选项标签。

使用此:

@Html.DropDownList("MODULE_ID", (IEnumerable<SelectListItem>)@ViewBag.MODULE_ID, "-- Select --",  new { @class = "form-control" })

另外,您应该考虑使用ViewModel类并取消魔术字符串"MODULE_ID"ViewBag魔法属性。 ViewModel类允许您强制命名而不进行强制转换,如下所示:

@Html.DropDownListFor(model => model.MODULE_ID, Model.Modules, "-- Select --", new { @class = "form-control" })

这是一个微妙的变化,但一切都是编译时检查。