Как вы знаете, мы можем установить атрибуты actionLink или textBox в представлениях бритвы, но как мы можем установить атрибуты в @Html.EditorFor
, я знаю, что EditorFor - это динамический элемент, который может быть задан в соответствии с типом модели, но все формы этого могут получить атрибуты. Итак, есть ли способ установить атрибут @Html.EditorFor
примерно так: new {@class = "myclass"}
?
Установите атрибут класса в Html.EditorFor в ASP.NET MVC Razor View
Ответ 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