Могу ли я установить текстовое поле только для чтения при использовании Html.TextBoxFor?

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

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

Ответ 1

Обновлен для современных версий .NET per @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) %>

Ответ 2

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%>

Ответ 3

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

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

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

Ответ 4

Сделать это только для чтения

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

В disable

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

Ответ 5

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new {readonly=true})%>

Ответ 6

<%: Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @autocomplete = "off", @readonly=true})%>

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

Ответ 7

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

@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" })

Ответ 8

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

@Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" }) 

Ответ 9

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

Ответ 10

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

<%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %>

Ответ 11

Фактически ответ Brain Mains почти прав.

@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = true })

Ответ 12

Если вам нужно применить свой собственный класс, вы можете использовать

  @Html.TextBoxFor(m => m.Birthday,   new Dictionary<string, object>() { {"readonly", "true"}, {"class", "commonField"} } )

Где

commonField - это класс CSS

и День рождения может быть строковым полем, которое вы, вероятно, можете использовать для сохранения даты jQuery Datapicker:)

<script>
             $(function () {
                 $("#Birthday").datepicker({

                 });
             });
  </script>

Это пример реальной жизни.

Ответ 13

Установив атрибут 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;" })}

Ответ 14

   @Html.TextBoxFor(model => model.IdUsuario, new { @Value = "" + User.Identity.GetUserId() + "", @disabled = "true" })

@disabled = "true"

Хорошо работать