Подтвердить что ты не робот

Html.EditorFor <> эквивалент для просмотра данных только для чтения?

В настоящее время я использую метод Html.EditorFor < > для генерации полей редактора, однако я хотел бы использовать что-то подобное для отображения информации о поле в формате только для чтения, например странице сведений, то есть метке с именем поля за которым следует метка с полем.

Есть ли в настоящее время эквивалент в MVC для его создания? Или мне нужно создать пользовательский помощник?

Спасибо заранее.

Изменить: мне известно о DisplayFor и LabelFor, это просто случай, когда их нужно комбинировать вручную?

4b9b3361

Ответ 1

Возможно, я что-то пропустил, но не могу просто использовать Html.LabelFor?

Изменить: Может потребоваться комбинация с использованием Html.LabelFor и Html.DisplayFor

Ответ 2

Используйте

<%= Html.DisplayFor(model => model.Property) %>

Или, если вы хотите увидеть текстовое поле readonly (отключено)

<%= Html.TextBoxFor(model => model.Property, new { disabled="disabled", @readonly = "readonly" })%>

Ответ 4

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>

Ответ 5

У меня есть элемент управления 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;
}

Ответ 6

Создайте шаблон EditorFor, который возвращает строку, а не поле формы. Затем используйте UIHint

например. Это шаблон StringReadOnly EditorFor

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %><%:ViewData.TemplateInfo.FormattedModelValue.ToString()%>

В модели

[UIHint("StringReadOnly")]public string NoChangeMe {get;set}

Затем вы можете просто вызвать поле с помощью EditorFor и вывести строку.

Конечно, поле не отправляется, но это то, что я хотел бы сделать.