如何在非页面/模块的实体类里边获取到一些基本的DNN信息, 比如PortalId, UserId, ModuleId, 如果你在模块开发过程中某一个UserControl继承了PortalModuleBase,这些属性是可以直接从父类PortalModuleBase得到的,可是如果你想在实体类或其他非继承PortalModuleBase的地方得到这些信息,那你得熟悉DNN的一些API,包括一些可以直接使用的静态类方法一般是在命名空间DotNetNuke.Common.Globals下,因为这些静态方法已封装了逻辑, 比如GetCurrentPortalSettings就是直接从HttpContext获取到对象PortalSettings, 而PortalId就是对象PortalSettings的数据库主键属性, 那具体是如何操作呢?以下提供了一些参考代码:
Dim _PortalSettings As DotNetNuke.Entities.Portals.PortalSettings = DotNetNuke.Entities.Portals.PortalController.GetCurrentPortalSettings
Dim _PortalId As Integer = _PortalSettings.PortalId
Dim _UserID As Integer = DotNetNuke.Entities.Users.UserController.GetCurrentUserInfo.UserID
Dim _TabID As Integer = _PortalSettings.ActiveTab.TabID
Dim mc As New DotNetNuke.Entities.Modules.ModuleController
'_ModuleId一般是DNN实体类的一个基本属性
Dim _ModuleConfiguration As DotNetNuke.Entities.Modules.ModuleInfo = mc.GetModule(_ModuleId, _TabID)
Dim _TabModuleID As Integer = _ModuleConfiguration.TabModuleID
'有时我们可以需要经常访问这些信息或模块设置信息,这时可以考虑封装所有设置项到一个基类里,分别对应到该类的属性,并考虑将该类进行缓存,如此一来可方便模块信息的获取及其相关操作!
Dim _Settings As HashTable = DotNetNuke.Portals.PortalSettings.GetTabModuleSettings(_
New Hashtable(mc.GetModuleSettings(_ModuleId)), _
New Hashtable(mc.GetTabModuleSettings(_TabModuleID)))