Могу ли я установить текстовое поле только для чтения при использовании Html.TextBoxFor?
У меня есть следующий тег с Html.TextBoxFor выражение и я хочу, чтобы содержимое было только для чтения, это возможно?
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%>
14 ответов:
обновлено для современных версий .NET за предложение @1c1cle в комментарии:
<%= Html.TextBoxFor(model => Model.SomeFieldName, new {{"readonly", "true"}}) %>
поймите, что это не "безопасный" способ сделать это, поскольку кто-то может ввести javascript, чтобы изменить это.
что-то нужно знать, что если вы установите это
readonly
значениеfalse
, вы на самом деле не вижу никаких изменений в поведении! Поэтому, если вам нужно управлять этим на основе переменной, вы не можете просто подключить эту переменную. Вместо этого вам нужно использовать условную логику, чтобы просто не пройти чтоreadonly
атрибут.вот непроверенное предложение о том, как это сделать (если есть проблема с этим, вы всегда можете сделать if / else):
<%= Html.TextBoxFor(model => Model.SomeFieldName, shouldBeReadOnlyBoolean ? new {{"readonly", "true"}} : null) %>
использовать следующий:
@Html.TextBoxFor(m => m.Whatever, new {@readonly = "readonly"})
Если вы хотите назначить ему класс, вы можете сделать это таким же образом, добавив @класс= "" свойство. Надеюсь, это поможет :)
чтобы сделать его только для чтения
@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @readonly="true"})
к diable
@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @disabled="true"})
следующий фрагмент работал для меня.
@Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" })
<%: Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @autocomplete = "off", @readonly=true})%>
вот как вы устанавливаете несколько свойств
эта работа для меня...
@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" })
используя пример @Hunter, в новом { .. } часть, добавить readonly = true, я думаю, что это будет работать.
другой вариант :
<%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %>
на самом деле ответ мозговых сетей почти правильный:
@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = true })
в случае, если вам нужно применить свой пользовательский класс, вы можете использовать
@Html.TextBoxFor(m => m.Birthday, new Dictionary<string, object>() { {"readonly", "true"}, {"class", "commonField"} } )
где
commonField это класс CSS
и день рождения может быть строковое поле, которое вы, вероятно, можете использовать, чтобы сохранить
jQuery Datapicker
дата :)<script> $(function () { $("#Birthday").datepicker({ }); }); </script>
вот реальный пример из жизни.
установив атрибут readonly либо true, либо false не будет работать в большинстве браузеров, я сделал это, как показано ниже, когда режим страницы "перезагрузка", я не включил атрибут "readonly".
@if(Model.Mode.Equals("edit")){ @Html.TextAreaFor(model => Model.Content.Data, new { id = "modEditor", @readonly = moduleEditModel.Content.ReadOnly, @style = "width:99%; height:360px;" }) } @if (Model.Mode.Equals("reload")){ @Html.TextAreaFor(model => Model.Content.Data, new { id = "modEditor", @style = "width:99%; height:360px;" })}