在我的项目中,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 。它可能与下拉列表的名称冲突。现在它工作正常。
答案 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" })
这是一个微妙的变化,但一切都是编译时检查。