禁用并指定 Html.DropDownList 的默认选择

Disable & Specify default selection for Html.DropDownList

我正在开发一个 asp.net mvc web 应用程序,在操作方法中我定义了以下 select 列表:-

ViewBag.ApproverID = new SelectList(db.staffs.ToList(), "ApproverID", "Name");

然后在视图上我试图禁用下拉列表如下:-

@Html.DropDownList("ApproverID",String.Empty,new { @disabled = "disabled" } )

但似乎下拉列表不允许这样做,并且会在视图中引发语法错误?有人可以提出建议吗? 谢谢

您使用了 DropDownList 的错误重载。需要

@Html.DropDownList("ApproverID", null, string.Empty, new { disabled= "disabled" })

但是你应该使用强类型的助手并绑定到模型 属性 以便它可以绑定到 postback

型号

public int ApproverID { get; set; }

控制器

ViewBag.ApproverList = new SelectList(db.staffs.ToList(), "ApproverID", "Name");

查看

@Html.DropDownListFor(m => m.ApproverID, (SelectList)ViewBag.ApproverList, "-Please select-", new { disabled = "disabled" })

如果您在控制器中设置 属性 ApproverID 的值并且它与选项的值之一相匹配,它将被 selected.

但是为什么要禁用下拉列表? - 你显然不能 select 任何东西并且它不会 post 返回所以模型 属性 将为空(并且可能导致 ModelState 错误)。如果您只想显示值,请使用 @Html.DisplayFor()@Html.HiddenFor(m => m.ApproverID),这样值 posts back