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

时间:2015-01-26 00:58:41

标签: asp.net-mvc razor asp.net-mvc-5 html.dropdownlistfor

我正在使用asp.net mvc web应用程序,在action方法中我定义了以下选择列表: -

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

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

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

但似乎下拉列表不允许这样做并且会在视图上引发语法错误?任何人都可以羡慕吗? 感谢

1 个答案:

答案 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),以便值回发