使用ASP.NET MVC 3 Helpers渲染带有title属性的span标记

Sla*_*uma 20 asp.net asp.net-mvc html-helper asp.net-mvc-3

可以将HTML title属性添加到输入标记,如下所示:

@Html.TextBoxFor(model => model.Name, new { title = "Customer name" })
Run Code Online (Sandbox Code Playgroud)

静态文本是否有类似的帮助?随着@Html.DisplayFor(model => model.Name)我可以呈现从模型属性的文本.如何添加HTML属性以便我获得如下span呈现的标记:

<span title="Customer name">ABC</span>
Run Code Online (Sandbox Code Playgroud)

Nec*_*ros 42

自定义html助手可能是最好的解决方案.

public static MvcHtmlString SpanFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression, object htmlAttributes = null)
{
    var valueGetter = expression.Compile();
    var value = valueGetter(helper.ViewData.Model);

    var span = new TagBuilder("span");
    span.MergeAttributes(new RouteValueDictionary(htmlAttributes));
    if (value != null)
    {
        span.SetInnerText(value.ToString());
    }

    return MvcHtmlString.Create(span.ToString());
}
Run Code Online (Sandbox Code Playgroud)

=>

@Html.SpanFor(model => model.Name, new { title = "Customer name" })
Run Code Online (Sandbox Code Playgroud)


Kri*_*nov 5

<span title="Customer name">@Model.Name</span>
Run Code Online (Sandbox Code Playgroud)