C# 如何在EditorFor模板中动态添加禁用的属性?

C# 如何在EditorFor模板中动态添加禁用的属性?,c#,asp.net-mvc,asp.net-mvc-4,editorfor,C#,Asp.net Mvc,Asp.net Mvc 4,Editorfor,我有一个自定义的EditorFor模板,我想用于DateTime字段。我希望能够检查用户是否处于特定角色,如果不是,则动态添加一个禁用的属性到文本框。我完全知道我可以在我的视图中检查并在那里添加disabled属性。但是,我有大约20个DateTime字段,如果可以避免的话,我不想检查它们的角色成员资格20x。因此,我希望在我的模板中有一种方法来检查用户是否是管理员,并在那里添加属性。这能做到吗 @model DateTime? @if (Model != null) { if (Us

我有一个自定义的
EditorFor
模板,我想用于
DateTime
字段。我希望能够检查用户是否处于特定角色,如果不是,则动态添加一个
禁用的
属性到文本框。我完全知道我可以在我的视图中检查并在那里添加disabled属性。但是,我有大约20个
DateTime
字段,如果可以避免的话,我不想检查它们的角色成员资格20x。因此,我希望在我的模板中有一种方法来检查用户是否是管理员,并在那里添加属性。这能做到吗

@model DateTime?

@if (Model != null)
{
    if (User.IsInRole("Administrator"))
    {
        @Html.TextBox("", Model.Value.ToShortDateString(), ViewData)
    }
    else
    {
        /*Dynamically add disabled attribute here*/
    }
}
我的看法是:

@Html.EditorFor(m => m.Company.ActiveDate, "ShortDateTime", new {@class = "input-small has-date-picker"})

尝试将此添加到您的else中

@Html.TextBox("", Model.Value.ToShortDateString(), ViewData, new { disabled = "disabled" })

您还在服务器上检查,如果他们的角色不正确,他们就不能更改日期?
Html.TextBox()
没有这样的重载?我不知道您在ViewData字段中放了什么。当我构建Html.TextBox时,我有(名称、值、Html属性)。html属性是您希望将新的属性设置为禁用的位置,查看第六个选项可能适用于您(名称、值、格式、html属性)