如何在MVC htmlAttribute中设置禁用

Oll*_*lie 19 c# asp.net-mvc

使用HTML Helper时,根据条件设置属性的最佳方法是什么.例如

<%if (Page.User.IsInRole("administrator")) {%>
<%=Html.TextBoxFor(m => m.FirstName, new {@class='contactDetails'}%>
<%} else {%>
<%=Html.TextBoxFor(m => m.FirstName, new {@class='contactDetails', disabled = true}%>
<%}%>
Run Code Online (Sandbox Code Playgroud)

必须有一种更好的方法以编程方式将一个额外的KeyPair添加到匿名类型?不能用

new { .... disabled = Page.User.IsInRole("administrator") ... }
Run Code Online (Sandbox Code Playgroud)

因为浏览器将任何禁用的属性值视为禁用输入

Den*_*s C 14

我建议你使用mvccontrib.FluentHtml.

你可以做这样的事情

 <%=this.TextBox(m=>m.FirstNam ).Disabled(Page.User.IsInRole("administrator"))%>
Run Code Online (Sandbox Code Playgroud)


Dev*_*per 14

它对我也有用......

<%: Html.DropDownList("SportID", (SelectList)ViewData["SportsSelectList"], "-- Select --", new { @disabled = "disabled", @readonly = "readonly" })%>

<%= Html.CheckBoxFor(model => model.IsActive, new { @disabled = "disabled", @readonly = "readonly" })%>
Run Code Online (Sandbox Code Playgroud)


hun*_*ter 8

Page.User.IsInRole("管理员")?null:new {disabled ="disabled"}

  • +1好主意......(除非他需要其他属性) (2认同)
  • 我需要其他属性 - 代码重复是我试图避免的 (2认同)