3

DNN 框架提供的唯一通过 ID 获取模块的方法还需要一个选项卡 ID。如果我没有标签ID,我该怎么办?

4

3 回答 3

6

如果您没有选项卡 ID,DotNetNuke.Entities.Modules.ModuleController 类的 GetModule 方法将接受选项卡 ID 的“null”值。也就是说,尝试以下操作:

new ModuleController().GetModule(moduleId, DotNetNuke.Common.Utilities.Null.NullInteger)

另请参阅我关于该主题的博客文章

于 2008-10-29T19:18:42.013 回答
3

将 null TabId 传递给 GetModule 时要注意的一件事是,如果您有一个安装在多个不同选项卡上的模块,您将得到第一个,因此 TabId、TabModuleId 和 ModuleOrder 的值将是基于第一个实例,它可能是也可能不是您想要的实例。

高温下,

大学教师

于 2008-11-13T05:13:11.413 回答
-2

Brian,我刚刚查看了 GetModule() 的代码,框架中没有任何特定的 VB 代码检查 tabid 是否为空。有趣的是,作为 SqlDataProvider 一部分的存储过程从 Modules 视图中选择具有匹配 moduleid 的行,无论 tabid 是什么......

ALTER PROCEDURE [dbo].[dnn_GetModule]

    @ModuleId int,
    @TabId    int

AS
SELECT  * 
FROM dbo.dnn_vw_Modules
WHERE   ModuleId = @ModuleId
AND     (TabId = @TabId or @TabId is null)

如果我理解正确,这将返回 moduleid 是您指定的行的所有行,无论 @tabid 是否为空。这使得@TabId 变得毫无意义,你不觉得吗?

于 2008-11-01T19:39:51.637 回答