尝试覆盖ASP.NET MVC中的DisplayNameAttribute以提供本地化字符串时遇到问题。代码本身很简单,与另一个Stackoverflow帖子link text
中的代码类似该代码适用于全球资源,但对本地资源却不太好。我有一个注册屏幕,并使用Visual Studio“生成本地资源”命令来创建我的本地资源文件。生成的文件名为Registration.aspx.resx,App_LocalResources文件夹是相对于实际的Registration.aspx页面创建的 - 正如人们所期望的那样。
但是,当我尝试使用:
获取本地化字符串时 ResourceManager.GetString(resourceKey)
我收到以下错误消息。
无法找到任何资源 适合指定的文化 或中性文化。确保 “FullAssemblyName.Views.Account.App_LocalResources.Registration_aspx.resources” 被正确嵌入或链接到 编译时汇编“FullAssemblyName” 时间,还是所有的卫星 所需的组件是可加载的 完全签署。
使用反射器,我可以看到该文件实际上是Registration.aspx.resources而不是Registration_aspx.resources - 下划线/句号是微妙的区别
FullAssemblyName.Views.Account.App_LocalResources.Registration.aspx.resources
我已经玩了很多代码,但无论我做什么,所请求的文件总是与在程序集中复制的文件不同。例如,如果我重命名Registration_aspx(在生成的Registration.aspx.designer.cs类中,我得到相同的错误,但这次路径是“... App_LocalResources.Registrationaspx.resources”
有没有人碰到这个?有什么方法可以确保我的程序集中找到的资源有这个下划线吗?!?!?
提前谢谢!