Как редактировать 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" не является подходящим именем переменной.