正在禁用的编辑器

本文关键字:编辑器 | 更新日期: 2023-09-27 18:21:52

我有一个EditorFor HTML助手,如下所示:

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

-

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

我每次都想让这个变成残疾人。我该怎么做?我不想做数据注释,因为这个属性也在其他视图中使用。只有在这个视图上我才想禁用它。

正在禁用的编辑器

MVC 5.1现在允许在EditorFor中传递HTML属性(请参阅答案)。所以你可以这样做:
@Html.EditorFor(model => m.Name, new { htmlAttributes = new { disabled = "disabled" } })

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

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

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

例如,代替

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

进行

<td>@Model.Name</td>

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

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

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