DNN框架提供的通过ID获取模块的唯一方法也需要选项卡ID。如果我没有标签ID,我该怎么办?
答案 0 :(得分:5)
如果您没有选项卡ID,DotNetNuke.Entities.Modules.ModuleController类的GetModule方法将接受选项卡ID的“null”值。也就是说,尝试以下方法:
new ModuleController().GetModule(moduleId, DotNetNuke.Common.Utilities.Null.NullInteger)
答案 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变得毫无意义,你不觉得吗?