У меня есть следующий тег с выражением Html.TextBoxFor, и я хочу, чтобы содержимое было только для чтения, возможно ли это?
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%>
У меня есть следующий тег с выражением Html.TextBoxFor, и я хочу, чтобы содержимое было только для чтения, возможно ли это?
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%>
Обновлен для современных версий .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) %>
		<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%>
		Используйте следующее:
 @Html.TextBoxFor(m => m.Whatever, new {@readonly = "readonly"})
Если вы хотите присвоить ему класс, вы можете сделать это таким же образом, добавив @class="" имущество. Надеюсь, это поможет:)
Сделать это только для чтения
@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @readonly="true"})
В disable
@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @disabled="true"})
		<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new {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" })
		Следующий фрагмент работал у меня.
@Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" }) 
		Используя пример @Hunter, в новой части {..} добавьте readonly = true, я думаю, что это сработает.
Другая возможность:
<%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %>
		Фактически ответ Brain Mains почти прав.
@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;" })}
		   @Html.TextBoxFor(model => model.IdUsuario, new { @Value = "" + User.Identity.GetUserId() + "", @disabled = "true" })
@disabled = "true"
Хорошо работать