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)