【发布时间】:2015-09-20 06:43:17
【问题描述】:
我想为 html.labelfor 添加一个扩展,这样我就可以使用类似的东西:
@Html.LabelFor(m=>m.Description, ":")
在呈现的 HTML 中添加分号作为后缀:
说明:
【问题讨论】:
标签: asp.net-mvc-4
我想为 html.labelfor 添加一个扩展,这样我就可以使用类似的东西:
@Html.LabelFor(m=>m.Description, ":")
在呈现的 HTML 中添加分号作为后缀:
说明:
【问题讨论】:
标签: asp.net-mvc-4
你可以这样做:
@Html.LabelFor(m => m.Description,
string.Format("{0}:", Html.DisplayNameFor(m => m.Description)))
DisplayNameFor 只为您提供不带标签标记的属性的显示名称,因此您可以将其用作LabelFor 中labelText 参数的一部分并随意格式化。这样您仍然可以从动态生成的标签文本中受益。
轻松包裹在自己的助手中:
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)
【讨论】:
return helper.LabelFor(expression, string.Format("{0}:", System.Web.HttpUtility.HtmlDecode(helper.DisplayNameFor(expression).ToString()))); 我欢迎任何更简单的解决方案。
这是一个重复问题和答案的链接。
这很好,因为冒号实际上是一个设计元素,而不是 viewModel 的 displayname 属性的一部分。这很好,因为冒号会出现在任何使用 diaplayname 属性的验证消息中
而且css超级简单。
【讨论】:
在 .NET 4.6+ 中,您可以使用 interpolated strings:
<label>@($"{Html.DisplayNameFor(m => m.Description)}:")</label>
或者如果你更喜欢详细的版本
@Html.LabelFor(m => m.Description, $"{Html.DisplayNameFor(m => m.Description)}:")
【讨论】:
LabelFor 将标签与字段的 ID 相关联,允许用户通过单击标签来选择字段。