c# - 资源中的 DisplayName 属性?

标签 c# asp.net-mvc localization resources resx

我有一个本地化的应用程序,我想知道是否可以从资源中为某个模型属性设置 DisplayName

我想做这样的事情:

public class MyModel {
  [Required]
  [DisplayName(Resources.Resources.labelForName)]
  public string name{ get; set; }
}

但我不能这样做,正如编译器所说:“属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式”:(

有什么解决方法吗?我正在手动输出标签,但我需要这些标签用于验证器输出!

最佳答案

如果您使用 MVC 3 和 .NET 4,您可以使用新的 Display System.ComponentModel.DataAnnotations 命名空间中的属性。此属性取代了 DisplayName 属性并提供更多功能,包括本地化支持。

在你的情况下,你会像这样使用它:

public class MyModel
{
    [Required]
    [Display(Name = "labelForName", ResourceType = typeof(Resources.Resources))]
    public string name{ get; set; }
}

作为旁注,此属性不适用于 App_GlobalResourcesApp_LocalResources 中的资源。这与这些资源使用的自定义工具 (GlobalResourceProxyGenerator) 有关。相反,请确保您的资源文件设置为“嵌入式资源”并使用“ResXFileCodeGenerator”自定义工具。

(作为进一步的旁注,您不应该将 App_GlobalResourcesApp_LocalResources 与 MVC 一起使用。您可以阅读更多关于为什么会这样的信息 here )

关于c# - 资源中的 DisplayName 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2431333/

相关文章:

C# 使用 Enumerable Range 和 except 与自定义类来确定丢失的序列号

c# - 返回两个可枚举之间的差异

c# - PC 上 XNA 中的信箱和缩放

asp.net-mvc - ASP.NET MVC 的所有可用 ActionResults 是什么?

c# - 多语言枚举

winforms - SSRS ReportViewer 中的日期时间格式始终使用 en-US?

c# - 如何从正在运行的 WCF 服务中导出元数据

c# - ASP.NET 路由,简单问题

c# - 是否有一种方法可以在选择其他语言时获得自定义控件在VS编辑器中显示正确的语言

cocoa-touch - 本地化的 Storyboard被忽略 (?)