Как редактировать CSS Html.Метод DisplayFor в MVC 3?
Я использую следующий код для отображения текста из моей модели представления, на мой взгляд:
@Html.DisplayFor(m => m.Name)
когда я смотрю на детали HTML в IE9 (который я должен использовать на работе), нет класса, связанного с именем, он просто использует стиль CSS тела вместо стиля класса отображения поля. Кто-нибудь знает, что может вызвать эту проблему или как я могу редактировать CSS для созданного текста?
2 ответов
DisplayFor используется для шаблонов причин. Если вы не используете шаблон, то вы должны просто использовать элемент, например, так: @Model.Name
Если вы хотите дать ему класс или id, то вам нужно обернуть его в span или div.
ваша проблема в том, что вы используете неправильный метод для вывода данных и ожидаете, что он сделает что-то еще. Нет встроенного способа вывода необработанных данных с именами классов.
таким образом, ваш выбор, оберните необработанный элемент в контейнер, который вы можете примените css или создайте шаблон для их использования, затем укажите имя шаблона в DisplayFor следующим образом:
@Html.DisplayFor(m => m.Name, "NameTemplate")
если это метка, используйте для нее правильный помощник, как предлагает Nataka526
в противном случае поместите его в промежуток с классом и обновите css для этого класса:
ваш html:
<span class="name">
@Html.DisplayFor(m => m.Name)
</span>
ваш css:
.name {
//custom css
}
обновление
другой вариант: Обновите Шаблоны отображения для обработки определенного ключа ViewData:
вид > Общий > DisplayTemplate (создать это папка, если у вас ее еще нет):
добавить строку файла.cshtml по:
@model string
@{
string myClass = ViewData["class"]
}
@if(string.IsNullOrEmpty(myClass))
{
@:@Model
}
else
{
<span class="@myClass">@Model</span>
}
вам может потребоваться добавить DisplayTemplates для других наконечников, а также помимо строки.
в представлении вы напишете что-то вроде этого:
@Html.DisplayFor(m => m.Name, new { @class= "name" })
это добавит пяди вокруг него автоматически.
обновление
объяснение:
есть перегрузка на Html.DisplayFor
которая принимает два параметра: выражение и object additionalViewData
. Таким образом, второй параметр, который я передаю, - это анонимный объект additionalViewData. Я создаю этот объект со свойствомclass
внутри HTML-помощника я затем проверяю, есть ли ViewData с ключом class
и если есть, я помещаю вывод внутри диапазона с этим значением класса.
**
обновлено имя переменной из class
to myClass
поскольку "class" не является подходящим именем переменной.