c# - 如何本地化派生属性的显示名称?
问题描述
我可以通过以下方式本地化模型类属性:
public class Person
{
[Display(Name = ResourceKeys.Person_FirstName)]
[Required(Name = ResourceKeys.Person_FirstName_Required)]
public string FirstName { get; set; }
//...other properties
}
其中“ResourceKeys”是特殊类,它存储“伪”键并将它们与相关资源文件中的“正确”键链接:
public class ResourceKeys
{
public const string Person_FirstName = "FirstName"; // looks up for key "FirstName" in Person."culture".resx file
public const string Person_FirstName_Required = "FirstName_Required"; //dtto
//...
}
这很好用 - 例如 @Html.DisplayNameFor(model => model.FirstName) 已正确本地化并呈现为德语的“Vorname”。
现在来解决问题。派生新类时,派生属性未本地化:
public class Student : Person
{
//...
}
例如,@Html.DisplayNameFor(model => model.FirstName) 可能根本没有本地化并呈现为“FirstName”。似乎只在学生资源文件中搜索密钥,并且由于未找到密钥本身而被呈现。
我绝对想避免在基类和派生类的资源文件中出现重复。我怎样才能做到这一点?
编辑:即使省略 ResourceKeys 类并且直接“硬编码”注释字符串,派生属性的本地化也不起作用:
public class Person
{
[Display(Name = "FirstName")]
[Required(Name = "FirstName_Required")]
public string FirstName { get; set; }
//...other properties
}
解决方案
推荐阅读
- java - 处理不同类别的搜索设置请求的单个 POST 端点
- jira - 在 Jira 中显示链接问题的截止日期
- java - 使用 Spring Boot 应用程序的 Maven 构建出现错误“没有可用的限定 bean”
- python - PHP 到 Python dict 数组变量和 API 替换
- java - 我们必须读取一个 xml 文件并将其转换为 csv 文件,然后将其存储在用户提供的路径中
- node.js - 测试是否正在发送正确的数据以供查看
- sql - 转换为范式
- git - 如何通过 git patch 添加新的 git 存储库文件
- python - 我收到一个错误,因为“失败:AttributeError:'ServicePrincipalCredentials'对象没有属性'get_token”
- r - 错误:编织时找不到函数“read_sav”