DisplayAttribute中的Html标签

时间:2011-08-27 03:05:42

标签: html asp.net-mvc-3

我希望显示名称包含一些html文本。

例如:

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

但是在浏览器的屏幕上我看到了:

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

而不是:

名字 boldtext

我有什么办法可以使它与Display属性一起使用吗?

基本上我想在所有必需的属性之后显示红色*,或者是否有其他方式可以更好地做到这一点,如果这种方式无法工作?

2 个答案:

答案 0 :(得分:1)

显示属性属于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>

希望它对你有用

答案 1 :(得分:0)

您可以创建自己的DisplayFor模板,以使用您喜欢的任何模板渲染此对象。