我有一个这样的EditorFor HTML帮助器:
<td>@Html.EditorFor(m => m.Name, belowLevel ? disabledHtmlOptions : null)</td>
-
object disabledHtmlOptions = new { disabled = "disabled" };
我想每次都禁用此功能。我怎么做?我不想做数据注释,因为这个属性也在其他视图中使用。只有在这个视图上我想禁用它。
答案 0 :(得分:8)
MVC 5.1现在允许在EditorFor (see this answer)中传递HTML属性。所以你可以这样做:
@Html.EditorFor(model => m.Name, new { htmlAttributes = new { disabled = "disabled" } })
答案 1 :(得分:4)
如果你坚持使用EditorFor
,你可以在页面加载时通过jQuery设置disabled属性。我知道它并不理想,但除非你为接受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>