web-dev-qa-db-ja.com

ASP.NET MVC3ヘルパーを使用してtitle属性を持つスパンタグをレンダリングする

次のように、HTML title属性を入力タグに追加することができます。

_@Html.TextBoxFor(model => model.Name, new { title = "Customer name" })
_

静的テキスト用の同様のヘルパーはありますか? @Html.DisplayFor(model => model.Name)を使用すると、モデルプロパティからテキストをレンダリングできます。 spanタグを次のようにレンダリングするようにHTML属性を追加するにはどうすればよいですか?

_<span title="Customer name">ABC</span>
_
21
Slauma

カスタム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());
}

=>

@Html.SpanFor(model => model.Name, new { title = "Customer name" })
42
Necros
<span title="Customer name">@Model.Name</span>
4
Kris Ivanov

@ HTML.DisplayFor(model => model.CustomerName)を使用している場合、テキストとしてレンダリングされ、値内にタグは表示されません。

Spanを使用して「DisplayFor」をバインドする場合は、以下のタグを使用します。

<span id="CustomerName">@Html.DisplayFor(model=>model.CustomerName)</span>
2
Ramesh P