Я пытаюсь добавить класс для входа.
Это не работает:
@Html.EditorFor(x => x.Created, new { @class = "date" })
asp.net-mvc
asp.net-mvc-3
razor
user137348
источник
источник
Ответы:
Добавлять класс
Html.EditorFor
не имеет смысла, так как внутри его шаблона вы можете иметь много разных тегов. Поэтому вам нужно назначить класс внутри шаблона редактора:и в пользовательском шаблоне:
источник
Начиная с ASP.NET MVC 5.1 возможно добавление класса в класс
EditorFor
(исходный вопрос определил ASP.NET MVC 3, и принятый ответ по-прежнему является лучшим из рассмотренных).Смотрите: Что нового в ASP.NET MVC 5.1, поддержка Bootstrap для шаблонов редактора
источник
Вы не можете установить класс для универсального EditorFor. Если вы знаете, какой редактор вам нужен, вы можете сразу его использовать, там вы можете установить класс. Вам не нужно создавать какие-либо пользовательские шаблоны.
источник
Ты можешь использовать:
(По крайней мере, с ASP.NET MVC 5, но я не знаю, как это было с ASP.NET MVC 3.)
источник
У меня была такая же неприятная проблема, и я не хотел создавать шаблон EditorTemplate, который применялся ко всем значениям DateTime (в моем пользовательском интерфейсе были моменты, когда я хотел отображать время, а не раскрывающийся календарь JQuery UI ). В моем исследовании коренные проблемы, с которыми я столкнулся, были:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
, но он не позволяет мне применять пользовательский класс «выбора даты»).Поэтому я создал собственный класс HtmlHelper, который имеет следующие преимущества:
Этот метод заменяет это пустой строкой.
А для тех, кто хочет знать синтаксис JQuery, который ищет объекты с
date-picker
украшением класса, чтобы затем отобразить календарь, вот он:источник
DateTimePickerFor
и обновляя поле даты модели, которое вы представляете,[DataType(DataType.Date)]
или[DataType(DataType.DateTime)]
? Вы также можете поместить его, скажем, в mm / dd / yyyy форму.ParseFormats(new string[] { "MM/dd/yyyy" })
(или легко изменить его так, как вам хочется). Если оно пустое, поле отображается как пустое без необходимости кодировать его.@MyHtmlHelpers.CalenderTextBoxFor(model => model.ExpirationDate)
. Есть идеи, как это реализовать?Можно предоставить класс или другую информацию через AdditionalViewData - я использую это, когда я позволяю пользователю создавать форму на основе полей базы данных (propertyName, editorType и editorClass).
На основании вашего первоначального примера:
и в пользовательском шаблоне:
источник
Не существует какого-либо
EditorFor
переопределения, позволяющего передавать анонимный объект, свойства которого каким-либо образом добавляются в качестве атрибутов для какого-либо тега, особенно для встроенных шаблонов редактора. Вам нужно будет написать свой собственный шаблон редактора и передать желаемое значение в качестве дополнительных viewdata.источник
не позволяет передавать аргументы для текстового поля
Вот как вы можете применять атрибуты.
источник
Используя jQuery, вы можете сделать это легко:
Вот ваш входной тег
Для DropDownlist вы можете использовать это:
Для выпадающего списка:
источник
Хотя вопрос был нацелен на MVC 3.0, мы обнаружили, что проблема сохраняется и в MVC 4.0. MVC 5.0 теперь изначально содержит перегрузку для htmlAttributes.
Я вынужден использовать MVC 4.0 на своем нынешнем месте работы, и мне нужно было добавить класс css для интеграции с JQuery. Я решил эту проблему с помощью одного метода расширения ...
Метод продления:
Использование HTML-разметки:
(Не забудьте включить пространство имен метода расширения в представление бритвы)
Объяснение: Идея состоит в том, чтобы внедрить в существующий HTML. Я решил проанализировать текущий элемент, используя Linq-to-XML, используя
XDocument.Parse()
. Я передаю атрибуты html как типobject
. Я использую MVCRouteValueDictionary
для анализа переданных htmlAttributes. Я объединяю атрибуты там, где они уже существуют, или добавляю новый атрибут, если он еще не существует.В случае, если ввод не разбирается,
XDocument.Parse()
я оставляю все надежды и возвращаю исходную строку ввода.Теперь я могу использовать преимущество DisplayFor (отображение типов данных, например, валюты), но также могу указывать классы CSS (и любые другие атрибуты в этом отношении). Может быть полезно для добавления таких атрибутов, как
data-*
, илиng-*
(угловой).источник
Вы можете создать такое же поведение, создав простой пользовательский редактор с именем DateTime.cshtml, сохранив его в Views / Shared / EditorTemplates.
и в ваших взглядах
Обратите внимание, что в моем примере я жестко программирую два класса CSS и формат даты. Вы можете, конечно, изменить это. Вы также можете сделать то же самое с другими html-атрибутами, такими как readonly, disabled и т. Д.
источник
Я использовал другое решение с использованием селекторов атрибутов CSS, чтобы получить то, что вам нужно.
Укажите HTML-атрибут, который вы знаете, и укажите нужный вам относительный стиль.
Как ниже:
источник
Нет необходимости создавать собственный шаблон для MVC 4. Используйте TextBox вместо EditFor, здесь специальные html-атрибуты не поддерживаются, он поддерживается только из MVC 5. TextBox должен поддерживать MVC 4, я не знаю о другой версии.
источник
Вы также можете сделать это через jQuery:
источник
Мне просто нужно было установить размер одного текстового поля на одной странице. Атрибуты кодирования в модели и создание пользовательских шаблонов редактора были излишними, поэтому я просто обернул вызов @ Html.EditorFor тегом span, который вызывал класс, который определяет размер текстового поля.
Объявление класса CSS:
Посмотреть код:
источник
Один из лучших способов применения класса
@Html.EditorFor()
в MVC3 RAzor -Это добавит выше стиль к вашему
EditorFor()
Это работает для MVC3.
источник