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

时间:2011-05-14 11:07:10

标签: asp.net asp.net-mvc asp.net-mvc-3 html-helper

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

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

静态文本是否有类似的帮助?使用@Html.DisplayFor(model => model.Name),我可以从模型属性渲染文本。如何添加HTML属性,以便我得到如下所示的span标记:

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

5 个答案:

答案 0 :(得分:41)

自定义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());
}

=&GT;

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

如果您使用的是@ HTML.DisplayFor(model =&gt; model.CustomerName)它将呈现为文本,它不会在值中显示任何标记。

如果你想绑定&#34; DisplayFor&#34;使用span,使用以下标记,

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

答案 3 :(得分:0)

丑陋,但;;-)(必填字段,未呈现.EditorFor内容在提交过程中丢失,甚至HTML注释也不起作用,已在 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)>

原始图片如下:

<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 !">

答案 4 :(得分:-1)

您使用以下

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