我的模型有一些创建视图和一些索引视图,但我想要不同的标签(从数据注释生成)。
E.g。
我希望@Html.DisplayNameFor(model => model.Url)
打印类似“页面网址”的内容,因为这是索引页面上我的表格的标题...
我希望@Html.LabelFor(modelItem => item.Url)
打印“输入页面网址”之类的内容,因为它适用于创建视图。
我已经尝试查看注释,但我能找到的唯一属性似乎同时设置:
[DisplayName("Page Url")]
public string Url { get; set; }
有没有办法(除直接输入我的视图外)做我想做的事情?
答案 0 :(得分:2)
使用Display属性而不是DisplayName,如下所示:
[Display(Name = "Page Url", Description = "Enter page Url")]
public string Url { get; set; }
然后,创建这个HtmlHelper:
public static MvcHtmlString DescriptionFor<TModel, TValue>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TValue>> expression)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
var description = metadata.Description;
TagBuilder tagBuilder = new TagBuilder("span");
tagBuilder.SetInnerText(description);
return new MvcHtmlString(tagBuilder.ToString(TagRenderMode.Normal));
}
并且,在这样的视图中使用它(对于描述):
@Html.DescriptionFor(model => model.Url)
而且,名称:
@Html.LabelFor(model => model.Url)