joh*_* Gu 2 asp.net-mvc html.dropdownlistfor razor asp.net-mvc-5
我正在使用asp.net mvc web应用程序,在action方法中我定义了以下选择列表: -
ViewBag.ApproverID = new SelectList(db.staffs.ToList(), "ApproverID", "Name");
Run Code Online (Sandbox Code Playgroud)
然后在视图上我试图禁用下拉列表如下: -
@Html.DropDownList("ApproverID",String.Empty,new { @disabled = "disabled" } )
Run Code Online (Sandbox Code Playgroud)
但似乎下拉列表不允许这样,并会在视图上引发语法错误?任何人都可以羡慕吗?谢谢
小智 5
你使用了错误的重载DropDownList.它需要
@Html.DropDownList("ApproverID", null, string.Empty, new { disabled= "disabled" })
Run Code Online (Sandbox Code Playgroud)
但是,您应该使用强类型帮助程序并绑定到模型属性,以便它可以在回发时绑定
模型
public int ApproverID { get; set; }
Run Code Online (Sandbox Code Playgroud)
调节器
ViewBag.ApproverList = new SelectList(db.staffs.ToList(), "ApproverID", "Name");
Run Code Online (Sandbox Code Playgroud)
视图
@Html.DropDownListFor(m => m.ApproverID, (SelectList)ViewBag.ApproverList, "-Please select-", new { disabled = "disabled" })
Run Code Online (Sandbox Code Playgroud)
如果ApproverID在控制器中设置属性值,并且它与选项的某个值匹配,则将选择该值.
但为什么禁用下拉列表?- 你显然无法选择任何东西,它不会回发,所以模型属性将为null(并可能导致ModelState错误).如果您只想显示值,请使用,@Html.DisplayFor()然后@Html.HiddenFor(m => m.ApproverID)将值发回
| 归档时间: |
|
| 查看次数: |
5464 次 |
| 最近记录: |