根据 DisplayName 属性生成列标题?
当我从列表模板生成视图时,我注意到列的名称不是基于 DisplayName() 注释。我知道如何编辑 list.tt 代码模板,但我不知道如何从类属性中检索 DisplayName 属性。
When I generate a view from the List template I notice that the names of the columns are not based on the DisplayName() annotation. I know how to edit the list.tt code template but I have no idea how to retrieve the DisplayName attributes from the class properties.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
获取 DisplayName 属性的常见方法是通过反射。您将遇到的问题是 .tt 模板和反射不能很好地协同工作。反射依赖于加载到 AppDomain 中的代码。由于 .tt 文件实际上并不加载代码,因此您无法反映它们。
有关此问题的更多信息以及可能的解决方案,请参见:
http://www.olegsych.com/2007/12/how-to-use-t4-to-generate-decorator-classes/
MVC 和 Visual Studio 必须使用某种类型的代码检查生成一些生成的内容,所以我会沿着这条路径查看,也许是一些疯狂的正则表达式,如果您不解决反射问题。
The common way to get the DisplayName attribute is via reflection. The issue your going to have is .tt templates and reflection don't play nice together. Reflection relies on code being loaded into the AppDomain. Since .tt files don't actually load code you can't reflect over them.
More information about this issue, and a possible solution here:
http://www.olegsych.com/2007/12/how-to-use-t4-to-generate-decorator-classes/
MVC and Visual Studio must use some type of code inspection to generate some of the generated so I'd look along that path, maybe some crazy regex, if your not into solving the reflection issue.