我正在为DNN 5编写自定义模块,我需要一个"管理"链接,以便在模块中的每个控件上.我创建了一个新的UserControl("ManagerLink"),它继承自PortalModuleBase,将我的链接放入该控件,并将该控件放在所有主要控件上.
问题是ModuleId和TabId在"ManagerLink"嵌套控件中始终为-1.PortalId工作得很好,我可以通过PortalSettings.ActiveTab.TabID得到一个TabId.
为什么我不能从"ManagerLink"控件中获取ModuleId和TabId,即使它继承自PortalModuleBase?
是否有另一种获取ModuleId的方法(相当于PortalSettings.ActiveTab.TabID)
更新2014年:
刚刚看到另一个答案,它比原来更好(并接受它).
如果您使用的是DNN 6及更早版本,请替换ModuleBase
为PortalModuleBase
来自DNN论坛的 William Severance 为我回答了这个问题,我也会在这里发布答案.
由于子控件继承自PortalModuleBase,我将在父控件的Page_Load处理程序中执行以下操作
注意:假定ManagerLink是对子控件的引用
VB.NET:
With ManagerLink .ModuleConfiguration = Me.ModuleConfiguration .LocalResourceFile = Me.LocalResourceFile End WithC#:
protected void Page_Load(System.Object sender, System.EventArgs e) { ManagerLink.ModuleConfiguration = this.ModuleConfiguration; ManagerLink.LocalResourceFile = this.LocalResourceFile }
上面允许子控件使用父级的ModuleConfiguration(包括ModuleId)和LocalResourceFile进行任何本地化.