简单的方法来重载Html.LabelFor以添加'后缀'?

时间:2014-09-02 13:03:21

标签: asp.net-mvc-4

我想在html.labelfor中添加一个扩展名,以便我可以使用以下内容:

@Html.LabelFor(m=>m.Description, ":")

哪个会在呈现的HTML中添加分号作为后缀:

  

说明

2 个答案:

答案 0 :(得分:14)

你可以这样做:

@Html.LabelFor(m => m.Description,
               string.Format("{0}:", Html.DisplayNameFor(m => m.Description)))

DisplayNameFor只为您提供没有标记标记的属性的显示名称,因此您可以将其用作labelTextLabelFor参数的一部分,并根据需要对其进行格式化。这样,您仍然可以获得动态生成的标签文本的好处。

轻松完成自己的帮手:

public static MvcHtmlString LabelWithColonFor<TModel, TValue>(
              this HtmlHelper<TModel> helper,
              Expression<Func<TModel, TValue>> expression)
{
    return helper.LabelFor(expression, string.Format("{0}:",
                                              helper.DisplayNameFor(expression)));
}

然后:

@Html.LabelWithColonFor(m => m.Description)

答案 1 :(得分:0)

这是指向重复问答的链接。

Postfix label text with colon

它很好,因为冒号实际上是一个设计元素,而不是viewModel的displayname属性的一部分。这很好,因为冒号将出现在任何使用diaplayname属性的验证消息中

而且css非常容易。