Как отредактировать CSS метода Html.DisplayFor в MVC 3?

Я использую следующий код для отображения текста из моей модели просмотра на мой взгляд:

@Html.DisplayFor(m => m.Name)

Когда я просматриваю детали HTML в IE9 (которые я должен использовать на работе), нет класса, связанного с этим именем, он просто использует стиль CSS для тела вместо стиля стиля отображения. Кто-нибудь знает, что может вызвать эту проблему, или как я могу редактировать CSS для созданного текста?

Ответ 1

DisplayFor используется для создания шаблонов. Если вы не используете шаблон, вы должны просто использовать этот элемент следующим образом: @Model.Name Если вы хотите присвоить ему класс или идентификатор, вам необходимо обернуть его в промежутке или div.

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

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

 @Html.DisplayFor(m => m.Name, "NameTemplate")

Ответ 2

если это метка, используйте для этого правильный помощник, поскольку Nataka526 предлагает

иначе поместите его в диапазон с классом и обновите css для этого класса:

ваш html:

<span class="name">
    @Html.DisplayFor(m => m.Name)
</span>

ваш css:

.name {
    //custom css
}

UPDATE

Другой вариант: Обновите свои шаблоны отображения, чтобы обрабатывать определенный ключ ViewData:

в Views > Shared > DisplayTemplate (создайте эту папку, если у вас ее еще нет):

добавить файл String.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" })

Это автоматически добавит промежутки вокруг него.

UPDATE

Пояснение:

Существует перегрузка на Html.DisplayFor, которая принимает два параметра: выражение и object additionalViewData. Таким образом, вторым параметром, который я передаю, является анонимный объект addViewData. Я создаю этот объект с помощью свойства class

Внутри html-помощника я проверяю, есть ли ViewData с ключом class, и если есть, я помещаю вывод внутри диапазона с этим значением класса.

** обновленное имя переменной от class до myClass, поскольку "класс" не является подходящим именем переменной.