【发布时间】:2017-03-12 10:46:38
【问题描述】:
我编写了一个带有数据注释验证的 ASP .Net Core Web 应用程序。在描述模型属性的属性中,我定义了 ErrorMessageResourceType 和 ErrorMessageResourceName。
资源文件放置在主应用解决方案之外的不同项目中。 (使用支持 Visual Studio 2017 社区编辑器的 dotnet CLI)
在我的模型中,我有:
[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation),
ErrorMessageResourceName = "EmptyField")]
[StringLength(30, ErrorMessageResourceType = typeof(Resources.NewPetDataValidation),
ErrorMessageResourceName = "NameMaxLength")]
public string Name {get; set;}
在资源项目中,我为每种语言创建了一个 .resx 文件,即 NewPetDataValidation.en.resx、NewPetDataValidation.de.resx。
比在 Visual Studio 资源编辑器中,我将资源字符串添加到具有资源名称的每个文件中。
对于英语: 名称:EmptyField 值:空字段!
对于德语: 名称:EmptyField 值:Leer Feld!
等等……
在 Razor 视图中,我有: @Html.ValidationMessageFor(Model => Model.Name, null, new { @style = "color:red"})
只要我在模型中访问的某个 .resx 文件中的资源字符串不超过一个,一切正常。我很肯定 ErrorMessageResourceName 与某些资源名称匹配。
另一方面,如果我为每个翻译的短语应用程序创建单独的 .resx 文件,则应用程序正在运行。但是我不认为创建这么多 .resx 文件是个好主意。
提前感谢您的支持。
【问题讨论】:
标签: c# asp.net-mvc asp.net-core resx localizable.strings