访问添加到 DNN 模块的用户控件的资源文件的正确方法?
Proper way of accessing resource file for a User Control added to DNN Module?
我正在使用 Christoc 模块模板,尝试创建一个包含本地化文本的模块。我在项目中添加了一个名为 TeamList.ascx 的新用户控件,在 App_LocalResources 文件夹中添加了两个新文件:
TeamList.ascx.resx 和 TeamList.ascx.fr-CA.resx(加拿大法语).
我可以在我的视图中毫无问题地包含用户控件,但是当模块加载到页面上时,所有包含本地化文本的地方都是空白的。
我已经尝试通过以下方式注册用户控件:
<moduleControl>
<controlKey>Teams</controlKey>
<controlSrc>
DesktopModules/LTSC_DashboardModule/TeamList.ascx
</controlSrc>
<supportsPartialRendering>False</supportsPartialRendering>
<controlTitle>Team Control</controlTitle>
<controlType>View</controlType>
<iconFile />
<helpUrl />
<viewOrder>0</viewOrder>
<supportsPopUps>True</supportsPopUps>
</moduleControl>
...在 DNN 清单文件中,但没有效果。
我不确定我在这里遗漏了什么。我认为这可能很简单。
在此先感谢您的帮助。
访问资源文件是通过使用 DNN 中的本地化方法完成的。您需要 post 您是如何引用资源文件的,以最终找出您做错了什么。
添加资源文件很简单,创建一个 RESX 文件来匹配您的 ASCX 文件
TeamList.ascx 会得到一个资源文件
App_LocalResources/ 调用了 TeamList.ascx.resx 导致路径
/app_localresources/teamlist.ascx.resx
要从后面的代码访问该路径,您只需调用
var stringValue = Localization.GetString("STRINGNAME.Text", LocalResourceFile)
其中 LocalResourceFile 继承自 PortalModuleBase(您需要让您的 ASCX 文件继承我的模板创建的基 class,它们继承自 PMB,或者您可以直接继承自 PMB。
可以类似地从 ASCX 文件中访问它
<%=Localization.GetString("STRINGNAME.Text", LocalResourceFile)%>
来自
的控件
<asp:label id="SOMEID" ResourceKey="STRINGNAME.Text" runat="server" />
唯一的其他潜在问题是,如果您将 ASCX 文件加载到另一个 ASCX 文件中,如果是这样,您需要将模块配置传递给代码隐藏中的子 ASCX 文件
中这样做
var mbl = (dnnsimplearticleModuleBase)LoadControl(controlToLoad);
mbl.ModuleConfiguration = ModuleConfiguration;
mbl.ID = System.IO.Path.GetFileNameWithoutExtension(controlToLoad);
phViewControl.Controls.Add(mbl);
这是否为您指明了正确的方向?
我正在使用 Christoc 模块模板,尝试创建一个包含本地化文本的模块。我在项目中添加了一个名为 TeamList.ascx 的新用户控件,在 App_LocalResources 文件夹中添加了两个新文件:
TeamList.ascx.resx 和 TeamList.ascx.fr-CA.resx(加拿大法语).
我可以在我的视图中毫无问题地包含用户控件,但是当模块加载到页面上时,所有包含本地化文本的地方都是空白的。
我已经尝试通过以下方式注册用户控件:
<moduleControl>
<controlKey>Teams</controlKey>
<controlSrc>
DesktopModules/LTSC_DashboardModule/TeamList.ascx
</controlSrc>
<supportsPartialRendering>False</supportsPartialRendering>
<controlTitle>Team Control</controlTitle>
<controlType>View</controlType>
<iconFile />
<helpUrl />
<viewOrder>0</viewOrder>
<supportsPopUps>True</supportsPopUps>
</moduleControl>
...在 DNN 清单文件中,但没有效果。
我不确定我在这里遗漏了什么。我认为这可能很简单。
在此先感谢您的帮助。
访问资源文件是通过使用 DNN 中的本地化方法完成的。您需要 post 您是如何引用资源文件的,以最终找出您做错了什么。
添加资源文件很简单,创建一个 RESX 文件来匹配您的 ASCX 文件
TeamList.ascx 会得到一个资源文件 App_LocalResources/ 调用了 TeamList.ascx.resx 导致路径 /app_localresources/teamlist.ascx.resx
要从后面的代码访问该路径,您只需调用
var stringValue = Localization.GetString("STRINGNAME.Text", LocalResourceFile)
其中 LocalResourceFile 继承自 PortalModuleBase(您需要让您的 ASCX 文件继承我的模板创建的基 class,它们继承自 PMB,或者您可以直接继承自 PMB。
可以类似地从 ASCX 文件中访问它
<%=Localization.GetString("STRINGNAME.Text", LocalResourceFile)%>
来自
的控件<asp:label id="SOMEID" ResourceKey="STRINGNAME.Text" runat="server" />
唯一的其他潜在问题是,如果您将 ASCX 文件加载到另一个 ASCX 文件中,如果是这样,您需要将模块配置传递给代码隐藏中的子 ASCX 文件
中这样做var mbl = (dnnsimplearticleModuleBase)LoadControl(controlToLoad);
mbl.ModuleConfiguration = ModuleConfiguration;
mbl.ID = System.IO.Path.GetFileNameWithoutExtension(controlToLoad);
phViewControl.Controls.Add(mbl);
这是否为您指明了正确的方向?