Могу ли я установить текстовое поле только для чтения при использовании Html.TextBoxFor? - PullRequest
53 голосов
/ 29 марта 2010

У меня есть следующий тег с выражением Html.TextBoxFor, и я хочу, чтобы содержимое было только для чтения, возможно ли это?

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%>

Ответы [ 14 ]

107 голосов
/ 29 марта 2010
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%>
37 голосов
/ 29 марта 2010

Обновлено для современных версий .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) %>
36 голосов
/ 15 августа 2014

Используйте следующее:

 @Html.TextBoxFor(m => m.Whatever, new {@readonly = "readonly"})

Если вы хотите назначить ему класс, вы можете сделать то же самое, добавив @class = "" имущество. Надеюсь, это поможет:)

12 голосов
/ 30 апреля 2014

Чтобы сделать это только для чтения

@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @readonly="true"})

Чтобы набрать

@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @disabled="true"})
7 голосов
/ 02 августа 2015

Следующий фрагмент работал для меня.

@Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" }) 
7 голосов
/ 29 марта 2010
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new {readonly=true})%>
4 голосов
/ 13 июля 2011
<%: Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @autocomplete = "off", @readonly=true})%>

Вот как вы устанавливаете несколько свойств

3 голосов
/ 31 октября 2011

Эта работа для меня ...

@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" })
2 голосов
/ 25 апреля 2014

Другая возможность:

<%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %>
1 голос
/ 29 марта 2010

Используя пример @Hunter, в новой части {..} добавьте readonly = true, думаю, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...