Asp.net mvc Html.Dropdownlist所选值不起作用

Asp.net mvc Html.Dropdownlist所选值不起作用,asp.net-mvc,html.dropdownlistfor,selected,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",p

在我的项目中,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" })
工作正常。但我必须添加class=“form control”。解决方案应该是什么?
更新:

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

您在错误的参数中添加了
表单控件类。目前,它被添加为选项标签

使用以下命令:

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

这看起来是一个微妙的变化,但所有内容都是编译时检查的。

我已将ViewBag名称从ViewBag.MODULE\u ID更改为ViewBag.ModuleList。它可能与dropdownlist的名称冲突。现在它工作正常。

到底是什么不起作用?是否没有显示值,或者只是它最初没有选择您期望的元素?调试器告诉您什么?它显示列表的初始值。不是所选的。
ID
TITLE
的类型是什么
int
string
?使用调试器检查新创建的选择列表。检查正确的SelectListItem是否已将其Selected属性设置为true。然后,这应该可以工作。如果添加选项标签,您确定这不是使用
Ctrl-F5
。它显示的标签是“-Select--”而不是所选值。这只是因为当时没有将任何值设置为所选值。如果您的
新选择列表(…,47)
工作正常,当您在浏览器中查看页面源代码时,它应该有一个
我的模块
。如果没有,则选择第一个选项。我再次调试程序。我找到了选择值为51的selectList,这是一个有效值。但在查看页面中,它无法显示所选值。但是如果我写:@Html.DropDownList(“MODULE_ID”,String.Empty)。它会显示所选的值:(当您使用
moduleManager.GetAll()
ViewBag.MODULE\u ID
时,HTML中是否有
51的标题
?我在我的HTML中找到了:用户组:|
@Html.DropDownList("MODULE_ID", (IEnumerable<SelectListItem>)@ViewBag.MODULE_ID, "-- Select --",  new { @class = "form-control" })
@Html.DropDownListFor(model => model.MODULE_ID, Model.Modules, "-- Select --", new { @class = "form-control" })