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

Установите атрибут класса в Html.EditorFor в ASP.NET MVC Razor View

Как вы знаете, мы можем установить атрибуты actionLink или textBox в представлениях бритвы, но как мы можем установить атрибуты в @Html.EditorFor, я знаю, что EditorFor - это динамический элемент, который может быть задан в соответствии с типом модели, но все формы этого могут получить атрибуты. Итак, есть ли способ установить атрибут @Html.EditorFor примерно так: new {@class = "myclass"}?

4b9b3361

Ответ 1

Помощник EditorFor отображает соответствующий шаблон редактора. Это может быть шаблон по умолчанию или какой-то пользовательский шаблон, который вы написали. Этот шаблон может содержать любую разметку. Он может содержать много элементов DOM. Итак, теперь вы понимаете, что просить применить класс к шаблону не имеет никакого смысла. К какому элементу этого шаблона нужен этот класс? Например, с помощью помощника TextBoxFor вы знаете, что он будет генерировать одно поле ввода, поэтому имеет смысл говорить о применении к нему класса CSS (что именно то, что позволяет аргумент htmlAttributes).

Говорят, что существуют разные методы. Например, я очень люблю писать пользовательские метаданные модели аннотаций и шаблоны настраиваемых шаблонов, как описано в в следующем сообщении в блоге.

Еще одна возможность - настроить шаблоны по умолчанию (как показано в блоге Brad Wilson) и применить различные атрибуты HTML к соответствующему полю ввода. Возьмем пример с шаблоном редактора string.cshtml:

@model string
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, ViewData)

И теперь, когда вы хотите отобразить этот шаблон редактора для некоторого свойства строки в вашей модели представления:

@Html.EditorFor(x => x.SomeStringProperty, new { @class = "myclass" })

Ответ 2

Попробуйте следующее:

@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })

Ответ 3

Добавить пользовательские атрибуты как

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @data_minlength = "3", @class = "form-control input-md", @placeholder = "Name", @required = "required", @id= "txtName"} })

Замените data- на @data_

Он будет генерировать правильный html с данными -

Ответ 4

Я считаю, что исходный плакат был правильным

  • каждый EditorFor()

    создает основной HTML element (хотя могут присутствовать и другие), поэтому было бы очень полезно передать объект, содержащий HTML attributes, для применения к этому главному HTML element.

  • Я хочу применить атрибут HTML 5 'автофокусировки' к одному полю в каждой форме,

  • но я НЕ хочу писать собственный код.

  • Я ненавижу тот факт, что в настоящее время я сокращен до использования, например, @Html.TextBoxFor() для этого одного поля, чтобы я мог применять определенные атрибуты к input element.

  • У метода EditorFor() есть параметр, который они вызывают additionalViewData, но я понятия не имею, что вы можете с этим сделать, а поиск в MSDN не помог я.

Ответ 5

Попробуйте этот простой код для добавления класса в @Html.EditorFor()

@Html.EditorFor(x => x.Demo)

<style type="text/css">

#Demo
{
   color:#fff;
   width: 50%;
}

</style>

этот код отлично работает для MVC3