我正在使用asp.net mvc web应用程序,在action方法中我定义了以下选择列表: -
ViewBag.ApproverID = new SelectList(db.staffs.ToList(), "ApproverID", "Name");
然后在视图上我试图禁用下拉列表,如下所示: -
@Html.DropDownList("ApproverID",String.Empty,new { @disabled = "disabled" } )
但似乎下拉列表不允许这样做并且会在视图上引发语法错误?任何人都可以羡慕吗? 感谢
答案 0 :(得分:5)
您使用DropDownList
的错误重载。它需要
@Html.DropDownList("ApproverID", null, string.Empty, new { disabled= "disabled" })
但是你应该使用强类型助手并绑定到模型属性,以便它可以在回发时绑定
模型
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
的值,并且它与选项的某个值匹配,则会选择它。
但为什么要禁用下拉列表? - 你显然无法选择任何东西,它不会回发,所以模型属性将为null(并可能导致ModelState
错误)。如果您只是想显示该值,请使用@Html.DisplayFor()
和@Html.HiddenFor(m => m.ApproverID)
,以便值回发