我正在使用ASP.NET资源国际化。
我有以下结构
/App_LocalResources
Default.aspx.resx
/App_GlobalResources
Commmon.resx
现在,我希望ASP.Net资源能够覆盖本地资源文件中的共享全局密钥。
例如,如果在我的 Default.aspx 页面中,我有以下内容:
<asp:Literal Text="<%$ Resources:FirstName %>" runat="server" />
我的全局资源文件和本地都有 FirstName ,我希望本地密钥覆盖共享,但如果在本地资源中找不到,则仍然会覆盖到全局。
我发现的问题是能够使用全局资源需要您提供全局资源文件名。
<asp:Literal Text="<%$ Resources:Common,FirstName %>" runat="server" />
...由于显式的全局文件名声明
,它阻止您能够拥有本地覆盖我希望有一种方法可以指定一个通用密钥,并让它首先搜索本地资源,如果没有找到,则搜索全局资源,而不需要指定显式的全局文件名。
这是否可行,是否有办法从ASP.Net资源获得此类功能?
答案 0 :(得分:1)
这不是资源在.NET AFAIK中工作的方式 - 我相信你最好的办法是封装资源访问是一种getter方法,它可以尝试匹配给定密钥的本地资源,然后再回退到全球的。虽然不是很漂亮。
当然,总是可以选择创建和使用自己的ResourceManager,但是从经验来看,很多比你想象的更痛苦。