关于c#:displayname属性

编程入门 行业动态 更新时间:2024-10-05 03:29:29

关于c#:displayname<a href=https://www.elefans.com/category/jswz/34/1771415.html style=属性"/>

关于c#:displayname属性


-attributesasp-mvcc#data-annotationsdisplayattribute

displayname attribute vs display attribute

ASP.NET MVC中的DisplayName属性和Display属性之间有什么区别?


DisplayName在模型元数据中设置DisplayName。例如:

1
2

[DisplayName("foo")]
public string MyProperty { get; set; }

并且如果您在视图中使用以下内容:

1

@Html.LabelFor(x => x.MyProperty)

它会产生:

1

<label for="MyProperty">foo</label>

Display的功能相同,但是还允许您设置其他元数据属性,例如Name,Description,...

布拉德·威尔逊(Brad Wilson)有一篇不错的博客文章,介绍了这些属性。

 相关讨论

  • +1-可能比我的(现在已删除)有用得多; 对我来说太早了:)
  • 我在调用@ descriptor.DisplayName时遇到PropertyDescriptor和Display(name ..)问题,它仅在使用DisplayName而不在Display(name ..)时有效。


它们都给您相同的结果,但是我看到的主要区别是您不能在DisplayName属性中指定ResourceType。对于MVC 2中的示例,必须将DisplayName属性子类化以通过本地化提供资源。 Display属性(MVC3和.NET4中的新增功能)支持ResourceType重载作为"开箱即用"属性。

 相关讨论

  • 很高兴知道! 即将实现自定义属性以从.resx文件加载显示值,然后发生此问题。 显示属性是开发本地化应用程序时要走的路。


我认为当前答案忽略了突出实际的重要差异和显着差异,以及这对预期用途的意义。尽管它们都可能在某些情况下都可以工作,因为实现者内置了对两者的支持,但是它们有不同的使用场景。两者都可以注释属性和方法,但是这里有一些重要的区别:

DisplayAttribute

  • 在System.ComponentModel.DataAnnotations.dll程序集的System.ComponentModel.DataAnnotations命名空间中定义
  • 可用于参数和字段
  • 使您可以设置其他属性,例如Description或ShortName
  • 可以使用资源进行本地化

DisplayNameAttribute

  • DisplayName在System.dll的System.ComponentModel命名空间中
  • 可以用于课程和活动
  • 无法使用资源进行本地化

程序集和名称空间说明了预期的用法,而本地化支持则是重中之重。 DisplayNameAttribute自.NET 2起就存在,似乎更多地用于在旧版属性网格中命名开发人员组件和属性,而不是用于可能需要本地化的最终用户可见的内容。

DisplayAttribute在.NET 4中稍后引入,并且似乎是专门为标记最终用户可见的数据类的成员而设计的,因此它更适用于DTO,实体和其他此类对象。我觉得很不幸,他们限制了它,因此它不能在类中使用。

编辑:看起来最新的.NET Core源代码现在也允许在类上使用DisplayAttribute。


也许这特定于核心,我发现DisplayName不起作用,但Display(Name = ...)起作用。这可以为其他人省去涉及的故障排除:)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

//using statements
using System;
using System.ComponentModel.DataAnnotations;  //needed for Display annotation
using System.ComponentModel;  //needed for DisplayName annotation

public class Whatever
{
    //Property
    [Display(Name ="Release Date")]
    public DateTime ReleaseDate { get; set; }
}


//cshtml file
@Html.DisplayNameFor(model => model.ReleaseDate)

  转大佬 

更多推荐

关于c#:displayname属性

本文发布于:2024-03-23 17:31:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1740903.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:属性   displayname

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!