Asp.net mvc 我可以让DisplayNameFor(T)和LabelFor(T)生成单独的结果吗?

Asp.net mvc 我可以让DisplayNameFor(T)和LabelFor(T)生成单独的结果吗?,asp.net-mvc,data-annotations,Asp.net Mvc,Data Annotations,我有一些模型的创建视图和索引视图,但我需要不同的标签(从数据注释生成) 例如 我希望@Html.DisplayNameFor(model=>model.Url)打印类似“页面Url”的内容,因为这是索引页面上我的表的标题 我希望@Html.LabelFor(modeleItem=>item.Url)打印类似“输入页面Url”的内容,因为它用于创建视图 我已尝试查看注释,但我能找到的唯一属性似乎设置了这两个属性: [DisplayName("Page Url")] public s

我有一些模型的创建视图和索引视图,但我需要不同的标签(从数据注释生成)

例如

我希望
@Html.DisplayNameFor(model=>model.Url)
打印类似“页面Url”的内容,因为这是索引页面上我的表的标题

我希望
@Html.LabelFor(modeleItem=>item.Url)
打印类似“输入页面Url”的内容,因为它用于创建视图

我已尝试查看注释,但我能找到的唯一属性似乎设置了这两个属性:

    [DisplayName("Page Url")]
    public string Url { get; set; }

是否有一种方法(除了直接在我的视图中键入之外)来执行我想要的操作?

使用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.LabelFor(model => model.Url)

自定义扩展,也同样如此。还感谢您提供的代码片段:)
@Html.LabelFor(model => model.Url)