Я хочу отключить текстовое поле в представлении. Поэтому я использую следующий код:
<%= Html.TextBox("ID", Model.ID, new { readonly="true" })%>
или
<%= Html.TextBox("ID", Model.ID, new { enable="false" })%>
Оба они не работают. в чем решение?
Попробуйте
<%= Html.TextBox("ID", Model.ID, new { @readonly="readonly" })%>
Я не уверен, что вы должны использовать перегрузку с 4 параметрами. Вы должны быть в состоянии использовать один с 3, но вам нужно добавить @ к readonly, так как readonly - это ключевое слово в C #. И установка @readonly на readonly соответствует XHTML.
<%= Html.TextBox("ID", Model.ID, null, new { @readonly="true" })%>
вместо
<%= Html.TextBox("ID", Model.ID, new { @readonly="true" })%>
Если вы посмотрите документацию , вы увидите, что третий параметр не htmlAttributes, как вы, вероятно, ожидали.
htmlAttributes
Вам необходимо использовать перегрузку с четырьмя параметрами .
Используя более современный API, вы можете использовать:
Механизм веб-форм:
<%= Html.TextBoxFor(m => m.ID, new { @readonly = "readonly" }) %>
Двигатель бритвы:
@Html.TextBoxFor(m => m.ID, new { @readonly = "readonly" })
Приветствие.
Если вы не обязаны показывать текстовое поле только для чтения на своей веб-странице, рассмотрите возможность использования помощника @Html.DisplayFor: ваш вывод будет доступен только для чтения (на самом деле это будет просто текст в элементе div) и будет частью модели когда двигатель будет привязываться к модели при отправке.
@Html.DisplayFor
Имейте в виду, что отключено TextBox не будет отправлен с HTML-формой, но только для чтения TextBox будет.
MVC3 документация показывает подпись в виде Html.TextBox (имя строки, значение объекта, объект htmlAttributes), использованного выше.
Или это:
<%= Html.TextBox("ID", Model.ID, new { @disabled="true" })%>