代码之家  ›  专栏  ›  技术社区  ›  bdukes Jon Skeet

在dotnetNuke中,如果我只有moduleID(而不是tabid),如何获取moduleInfo对象?

  •  2
  • bdukes Jon Skeet  · 技术社区  · 17 年前

    DNN框架提供的唯一一个按ID获取模块的方法还需要一个选项卡ID。如果不这样做,我该怎么做? 标签ID?

    3 回复  |  直到 13 年前
        1
  •  5
  •   bdukes Jon Skeet    17 年前

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

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

    也见 my blog post on the subject .

        2
  •  3
  •   community wiki Don Worthley    17 年前

    将空tabid传递给getmodule时要注意的一点是,如果您有一个安装在多个不同选项卡上的模块,那么您将返回第一个选项卡,因此tabid、tabmoduleid和moduleorder的值将基于第一个实例,这可能是您想要的实例,也可能不是您想要的实例。

    HTH

        3
  •  -2
  •   Rafe    17 年前

    布莱恩,我刚刚看了一下getmodule()的代码,框架中没有任何特定的vb代码来检查tabid是否为空。但有趣的是,作为sqldataProvider一部分的存储过程从模块视图中选择具有匹配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变得毫无意义,你不觉得吗?

    推荐文章