Как сделать @Html.EditorFor Disabled
У меня есть следующее внутри моего веб-приложения asp.net mvc: -
<div><span class="f">Data Center Name</span> @Html.EditorFor(model => model.Switch.TMSRack.DataCenter.Name, new { disabled = "disabled" })</div>
но поле не будет отключено, может ли кто-нибудь прислушаться?
БЛАГОДАРЯ
Ответы
Ответ 1
@Html.EditorFor()
не имеет перегрузки для поддержки htmlAttributes. Вы можете попробовать @Html.TextBoxFor()
@Html.TextBoxFor(model => model.propertyName, new {disabled= "disabled" })
Если вы используете ключевые слова системы, такие как class
в htmlAttributes, добавьте @
перед именем атрибута.
Пример:
@Html.TextBoxFor(model => model.propertyName, new {@class = "disabledClass" })
Ответ 2
Использование MVC 5, @Html.EditorFor()
поддерживает htmlAttributes
@Html.EditorFor(model => model.x, new { htmlAttributes = new { @class = "form-control", @disabled = "disabled" } })
В приведенном выше примере показано, как вы можете добавить класс, а также отключенный атрибут
Ответ 3
Другая альтернатива: окружите EditorFor с помощью div или span с определенным идентификатором, а затем используйте немного jquery/js:
<span id="editors">
@Html.EditorFor(x => x.ViewModelProperty)
</span>
<!-- Disable above editors. EditorFor doesn't allow html attributes unfortunately. -->
<script type="text/javascript">
$(function () { $('#editors :input').attr("disabled", true); });
</script>
Ответ 4
Если вы теряете информацию, когда принимаете изменения Edit-changes...
Вы можете попробовать
<h3>@Model.x</h3>
@Html.HiddenFor(model => model.x, new { htmlAttributes = new { @class = "form-control" } })
Ответ 5
Вы также можете использовать EditorFor()
например:
@Html.EditorFor(model => model.Nama, new { htmlAttributes = new { @disabled ="true", @class = "form-control" } })
Ответ 6
Вместо добавления класса просто используйте это:
@Html.EditorFor(model => model.name, new { htmlAttributes = new { disabled = "disabled" } })