Отображение тега span с атрибутом title с помощью помощников ASP.NET MVC 3 - PullRequest
20 голосов
/ 14 мая 2011

В тег ввода можно добавить атрибут HTML title, например:

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

Есть ли аналогичный помощник для статического текста? С @Html.DisplayFor(model => model.Name) я могу визуализировать текст из свойства модели. Как добавить атрибуты HTML, чтобы тег span отображался следующим образом:

<span title="Customer name">ABC</span>

Ответы [ 4 ]

41 голосов
/ 14 мая 2011

Пользовательский 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" })
3 голосов
/ 14 мая 2011
<span title="Customer name">@Model.Name</span>
2 голосов
/ 24 февраля 2017

Если вы используете @ HTML.DisplayFor (model => model.CustomerName), он будет отображаться как текст, он не будет отображать тег внутри значений.

Если вы хотите привязать «DisplayFor» с помощью span, используйте тег ниже,

<span id="CustomerName">@Html.DisplayFor(model=>model.CustomerName)</span>
0 голосов
/ 14 мая 2011

Вы используете ниже

<span title="Customer name">@Html.DisplayTextFor(m => m.CustomerName)</span>
...