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