HTML-теги внутри DisplayAttribute - PullRequest
       2

HTML-теги внутри DisplayAttribute

2 голосов
/ 27 августа 2011

Я бы хотел, чтобы отображаемое имя содержало HTML-текст.

Например, что-то вроде:

[Display(Name = "First Name <b class=\"red\">boldtext</b>)]
public string FirstName { get; set; }

Но на экране браузера я вижу:

First Name <b class="red">boldtext</b>

Вместо:

Имя полужирный текст

Могу ли я что-нибудь сделать, чтобы он работал с атрибутом Display?

По сути, я хотел бы отобразить красный * после всех необходимыхатрибуты, или есть какой-то другой способ, которым я мог бы сделать это лучше, если этот способ не может работать?

Ответы [ 2 ]

1 голос
/ 27 августа 2011

Свойство Display принадлежит Model, поэтому оно должно содержать обычные текстовые данные, без формата.
Если вы хотите добавить формат имени, вы можете сделать это
Напишите метод расширения, чтобы получить значение из отображаемого имени

    public static MvcHtmlString DisplayNameFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string templateName)
    {
        Expression expressionBody = expression.Body;

        if (expressionBody is MemberExpression)
        {
            MemberExpression memberExpression = (MemberExpression)expressionBody;
            string propertyName = memberExpression.Member.Name;

            return html.DisplayFor(expression, templateName, new { Message = html.ViewData.ModelMetadata.Properties.Single(p => p.PropertyName == propertyName).Name});
        }            
    }

Вид:

@Html.DisplayNameFor(model => model.FirstName, "_NameTemplate")

Шаблон: _NameTemplate.cshtml

<span>@ViewData["Message"]</span>

Надеюсь, это полезно для вас

0 голосов
/ 27 августа 2011

Вы можете создать свой собственный шаблон DisplayFor, чтобы визуализировать этот объект с любым шаблоном, который вам нравится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...