我在我的网页中使用显式本地化,例如:
<asp:Literal ID="appTitle" runat="server" Text="<%$ Resources:TranslationResource, AppTitle %>"></asp:Literal></div>
如果AppTitle资源不存在,有没有办法避免“解析器错误”并显示空字符串或资源名称?
提前致谢。
答案 0 :(得分:4)
如果密钥不存在,您可以使用GetGlobalResourceObject
,它执行相同的操作但返回null,而不是抛出异常。
<div><%= GetGlobalResourceObject("TranslationResource", "AppTitle") %></div>
您可以使用null-coalescing运算符轻松添加回退值:
<div><%= GetGlobalResourceObject("TranslationResource", "AppTitle") ?? "No translation resource" %></div>
如果您需要以集中方式修改本地化提供程序的行为(无需修改页面中使用的语法),则可以覆盖resourceProviderFactoryType
。将类型添加到web.config 全球化部分...
<globalization resourceProviderFactoryType="MyLocalizationProvider"/>
通过子类MyLocalizationProvider
创建ResourceProviderFactory
。