Skip to content Skip to sidebar Skip to footer

Render Span Tag With Title Attribute With ASP.NET MVC 3 Helpers

It's possible to add a HTML title attribute to an input tag like so: @Html.TextBoxFor(model => model.Name, new { title = 'Customer name' }) Is there a similar helper for static

Solution 1:

Custom html helper is probably the neatest solution.

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" })

Solution 2:

<span title="Customer name">@Model.Name</span>

Solution 3:

If you are using @HTML.DisplayFor(model=>model.CustomerName) It will render as text, It will not shows any tag inside the values.

If you want to bind the "DisplayFor" using span , Use the below tag,

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

Solution 4:

Ugly, but works ;-) (required field, without rendering .EditorFor content get lost during submit, even HTML comment around does not work, tested on System.Web.Mvc 5.0.0.0)

<b style="display:none">@Html.EditorFor(model => model.UserName)</b>
<input name="UserName" disabled readonly value=@Html.DisplayTextFor(model => model.UserName)>

Original looked like:

<input class="text-box single-line" data-val="true" data-val-required="The User Name field is required." id="UserName" name="UserName" type="text" value="Hate Razor !">

Solution 5:

You use the below

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

Post a Comment for "Render Span Tag With Title Attribute With ASP.NET MVC 3 Helpers"