禁用EditorFor

时间:2012-01-27 15:58:33

标签: c# asp.net-mvc asp.net-mvc-3

我有一个这样的EditorFor HTML帮助器:

<td>@Html.EditorFor(m => m.Name, belowLevel ? disabledHtmlOptions : null)</td>

-

object disabledHtmlOptions = new { disabled = "disabled" };

我想每次都禁用此功能。我怎么做?我不想做数据注释,因为这个属性也在其他视图中使用。只有在这个视图上我想禁用它。

4 个答案:

答案 0 :(得分:8)

MVC 5.1现在允许在EditorFor (see this answer)中传递HTML属性。所以你可以这样做:

@Html.EditorFor(model => m.Name, new { htmlAttributes = new { disabled = "disabled" } })

答案 1 :(得分:4)

如果你坚持使用EditorFor,你可以在页面加载时通过jQuery设置di​​sabled属性。我知道它并不理想,但除非你为接受htmlAttributes集合的EditorFor创建重载,否则它是唯一的方法

$(document).ready(function() {
   $('#Name').attr('disabled', 'disabled');
});

答案 2 :(得分:3)

您只需为视图呈现HTML即可。如果它意味着“只读”只是渲染文本。否则,您可以呈现<input>元素。

例如,而不是

<td>@Html.EditorFor( m => m.Name )</td>

DO

<td>@Model.Name</td>

<td><input type="text">@Model.Name</input></td>

答案 3 :(得分:3)

我不相信EditorFor方法的签名允许您指定任何HTML属性。但是,如果您将其更改为TextBoxFor,则可以。

<td>@Html.TextBoxFor(m => m.Name, belowLevel ? disabledHtmlOptions : null)</td>