Ответ 1
Возможно, я что-то пропустил, но не могу просто использовать Html.LabelFor
?
Изменить: Может потребоваться комбинация с использованием Html.LabelFor
и Html.DisplayFor
В настоящее время я использую метод Html.EditorFor < > для генерации полей редактора, однако я хотел бы использовать что-то подобное для отображения информации о поле в формате только для чтения, например странице сведений, то есть метке с именем поля за которым следует метка с полем.
Есть ли в настоящее время эквивалент в MVC для его создания? Или мне нужно создать пользовательский помощник?
Спасибо заранее.
Изменить: мне известно о DisplayFor и LabelFor, это просто случай, когда их нужно комбинировать вручную?
Возможно, я что-то пропустил, но не могу просто использовать Html.LabelFor
?
Изменить: Может потребоваться комбинация с использованием Html.LabelFor
и Html.DisplayFor
Используйте
<%= Html.DisplayFor(model => model.Property) %>
Или, если вы хотите увидеть текстовое поле readonly (отключено)
<%= Html.TextBoxFor(model => model.Property, new { disabled="disabled", @readonly = "readonly" })%>
Вы можете использовать
Html.DisplayFor(...)
Документация:
http://msdn.microsoft.com/en-us/library/system.web.mvc.html.displayextensions.displayfor.aspx
MVC 5, пример Bootstrap 3.
<div class="col-md-6">
@Html.LabelFor(m => m.UserModel.company, htmlAttributes: new {@class = "control-label tc-label"})
@Html.EditorFor(m => m.UserModel.company, new {htmlAttributes = new { disabled = "disabled", @readonly = "readonly", @class = "form-control col-md-6"}})
@Html.ValidationMessageFor(m => m.UserModel.company, "", new {@class = "text-danger"})
</div>
У меня есть элемент управления textbox, связанный с свойством Model. Тем не менее, у меня есть ползунок JQueryUI, который я использую для заполнения значения, вместо того, чтобы напрямую его редактировать. Поэтому я хочу, чтобы это значение было только для чтения, но все еще привязано к модели. Я не могу применять html-атрибуты с помощью Html.EditorFor(...), я могу использовать метод Html.TextboxFor(...). Однако, если я устанавливаю атрибут "отключен" HTML на значение "отключено" (согласно решению zihotki), то среда MVC по умолчанию не привязывает значение в текстовом поле к связанному свойству модели при отправке назад к методу контроллера (см. привязка модели с отключенным текстовым полем). Моим решением было использовать Html.TextboxFor и установить только атрибут readonly,
@Html.TextBoxFor(model => model.MyProperty, new { @readonly = "readonly" })
а затем включить запись CSS для ввода: readonly для серого только для чтения:
input:read-only
{
background-color: #E6E6E6;
}
Создайте шаблон EditorFor, который возвращает строку, а не поле формы. Затем используйте UIHint
например. Это шаблон StringReadOnly EditorFor
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %><%:ViewData.TemplateInfo.FormattedModelValue.ToString()%>
В модели
[UIHint("StringReadOnly")]public string NoChangeMe {get;set}
Затем вы можете просто вызвать поле с помощью EditorFor и вывести строку.
Конечно, поле не отправляется, но это то, что я хотел бы сделать.