It\'s possible to add a HTML title
attribute to an input tag like so:
@Html.TextBoxFor(model => model.Name, new { title = \"Customer name\" })
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" })
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>
You use the below
<span title="Customer name">@Html.DisplayTextFor(m => m.CustomerName)</span>
<span title="Customer name">@Model.Name</span>
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 !">