2012-01-27 4 views
3

У меня есть помощник EditorFor HTML как это:Отключение EditorFor

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

-

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

Я хочу сделать это инвалидами в каждый момент времени. Как мне это сделать? Я не хочу делать аннотации данных, потому что это свойство используется и в других представлениях. Только с этой точки зрения я хочу отключить его.

+0

raj, вы рискуете получить отличный ответ здесь, так как ваше описание проблемы немного расплывчато. есть ли способ расширить проблему и требуемое решение, возможно, с вашим примером, который будет немного расширен, а также подтекст фона, если это возможно. –

+0

@ Jim, я не знаю, как я могу описать его более правильно, однако мне нужно только отключить мой текстовое поле или редактор для окна, в котором отображается имя. Я могу отображать в Label, но это не требование. –

+0

raj - я думаю, что ваше редактирование просто помогло :) –

ответ

4

, если вы застряли на использовании EditorFor вы можете установить отключенный атрибут с помощью JQuery на странице нагрузки. Я знаю, что это не идеально, но это единственный путь, если вы не создать перегрузку EditorFor, который принимает коллекцию htmlAttributes

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

Позвольте мне посмотреть, будет ли это работать. –

3

Вы можете просто визуализировать HTML для представления. Если это предназначено для «только для чтения», просто визуализируйте текст. В противном случае вы можете сделать элемент <input>.

Например, вместо

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

сделать

<td>@Model.Name</td> 

или

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

m не существует в текущем контексте, когда я пробовал это @ m.Name? –

+1

Попробуйте '@ Model.Name' – MisterIsaak

+0

попробуйте @ Model.Name, (избили меня на @Jisaak). Обновленный ответ. – contactmatt

3

Я не считаю, что подпись метода EditorFor позволяет указать атрибуты HTML. Вы можете, если вы измените его на TextBoxFor.

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

MVC 5.1 теперь позволяет переходящая в HTML атрибуты в EditorFor (see this answer). Таким образом, вы можете сделать это:

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