2009-09-30 71 views
2

在asp.net 3.5应用程序中,我试图明确地本地化文本。以下示例来自MSDNAsp.Net 3.5使用web应用程序进行显式定位

<asp:Label ID="Label2" Runat="server" Text="<%$ Resources:LocalizedText, Msg1 %>"> 

问题是它似乎无法找到资源类。我正在使用一个asp.net应用程序,而不是网站。我试过为资源类指定完整的命名空间。例如:

<asp:Label ID="Label2" Runat="server" Text="<%$ Resources:MyProject.Web.Properties.Resources, Msg1 %>"> 

但无济于事。有任何想法吗?

忘了提...如果我使用数据绑定表达式这样的,它的工作原理:

<asp:Label ID="Label2" Runat="server" Text="<% MyProject.Web.Properties.Resources.Msg1 %>"> 

更新:

花一点时间与反射后在ResourceExpressionBuilder碰到这样的:

private static IResourceProvider GetGlobalResourceProvider(string classKey) 
{ 
    string str = "Resources." + classKey; 
    CacheInternal cacheInternal = HttpRuntime.CacheInternal; 
    string key = "A" + str; 
    IResourceProvider provider = cacheInternal[key] as IResourceProvider; 
    if (provider == null) 
    { 
     EnsureResourceProviderFactory(); 
     provider = s_resourceProviderFactory.CreateGlobalResourceProvider(classKey); 
     cacheInternal.UtcInsert(key, provider); 
    } 
    return provider; 
} 

因此,它看起来像期待Resources.xxx的命名空间。我当前的资源文件驻留在Web应用程序的名称空间中的WebApp> Properties> Resources中。认为这是问题。

回答

1

我已经得到它与这个工作:

<asp:Localize runat="server" Text="<%$ Resources:PageResource1.Title %>" /> 

我的资源是App_LocalResources文件夹中名为PageName.aspx.resx文件。我的资源密钥名称是PageResource1.Title

对于全球资源(App_GlobalResource\ErrorMessages.resx),这似乎工作:

<%$ Resources:ErrorMessages, ErrorHasOccurred %> 
相关问题