在DotNetNuke中,如果我只有一个ModuleId(而不是TabId),我如何获得ModuleInfo对象

时间:2008-10-29 19:18:31

标签: asp.net .net dotnetnuke dotnetnuke-module

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

3 个答案:

答案 0 :(得分:5)

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

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

另见my blog post on the subject

答案 1 :(得分:3)

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

HTH,

答案 2 :(得分:-2)

Brian,我刚看了一下GetModule()的代码,框架中没有任何特定的VB代码检查tabid为null。有趣的是,作为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)

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