关于Resource的使用及与DNN的整合

对于Resource,DNN早前有自己的一套解决方案,在ASP.NET 2.0之后,ASP.NET的资源解决方案已日趋完善。

那么,在DNN中我们可能会使用ASP.NET的资源解决方案, 如何兼容这两套资源解决方案(DNN资源解决方案和ASP.NET资源解决方案)

方法很简单:(这里DNN的版本是:04.08.02)

在web.config中注释掉

          <remove extension=".resx"/>
          <remove extension=".resources"/>

这两行。

另外DNN有个Bug要注意admin\Host\App_LocalResources\Solutions.ascx.resx会导致兼容出现错误(打开Host Setting时会出错),解决方法是把xsd:schema和resheader拷到Solutions.ascx.resx中(DNN4.4.1版本估计不存在这个问题)。

以下是关于Resource的使用及与DNN的整合的方案,混合了DNN资源解决方案和ASP.NET资源解决方案两种写法

1.0版本: 

1.       在页面中出现的文字(所指页面包括aspx, ascx),使用App_LocalResources

在控件中使用meta:resourcekey属性,例如:

<asp:Button ID="Button1" runat="server" Text="Button" meta:resourcekey="Button1Resource1" />

2.       在模块的后台代码中出现的文字(模块的后台代码: ascx.cs中的代码,继承自PortalModuleBase),使用App_LocalResources,调用时使用DNN的方法Localization.GetString例如:

lblMessage.Text = Localization.GetString("Message", LocalResourceFile)

3.       类代码中出现的文字(cs),及不能使用App_LocalResources的情景,使用App_GlobalResources,我已添加了两个文件HRB_MainResources.resxHRB_TextResources.resxApp_GlobalResources\HRB下,调用时使用: Resources.HRB_MainResourcesResources.HRB_TextResources




2.0版本: 

1.       与页面相关的(包括aspx,ascx等),使用App_LocalResources,使用方法:

1.1.    <asp:Button ID="btnSubmit" runat="server"   meta:resourcekey="btnSubmit" />

1.2.    <asp:Button ID="btnSubmit" runat="server"  Text="<%$ Resources:btnSubmit.Text %>" />

1.3.    btnSubmit.Text = this.GetLocalResourceObject("btnSubmit.Text").ToString();

 

2.       全局相关的,或在类文件中使用的,使用App_GlobalResources,使用方法:

2.1.    <asp:Label ID="lblApplicationName" runat="server"  Text="<%$ Resources: HRB_MainResources, Key1 %>" />

2.2.    string  str1 = Resources. MainResources. Key2;

   
原文地址:https://www.cnblogs.com/yaksea/p/1234019.html