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

发布于 2024-07-08 06:33:05 字数 69 浏览 5 评论 0原文

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

The only method provided by the DNN framework to get a module by ID also required a tab ID. What can I do if I don't have a tab ID?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

只为守护你 2024-07-15 06:33:06

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

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

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

The GetModule method off of the DotNetNuke.Entities.Modules.ModuleController class will accept a "null" value for tab ID if you don't have a tab ID. That is, try the following:

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

See also my blog post on the subject.

红ご颜醉 2024-07-15 06:33:06

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

HTH,

One thing to watch out for when passing a null TabId to GetModule is that if you have a module that's installed on a number of different tabs, you'll be getting the first one back, so the values for TabId, TabModuleId and ModuleOrder will be based on that first instance, which may or may not be the instance you wanted.

HTH,

Don

山人契 2024-07-15 06:33:06

Brian,我刚刚查看了 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 是否为 null。 这使得 @TabId 毫无意义,你不觉得吗?

Brian, I just took a look at the code for GetModule(), and there isn't any specific VB code in the framework that checks for the tabid being null. What's interesting though is that the stored procedure that is part of the SqlDataProvider selects rows from the Modules view that have a matching moduleid, no matter what tabid is...

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)

If I understand this correctly, this would return all the rows where moduleid is the one you specified, no matter if @tabid is null or not. That makes the @TabId rather pointless, don't you think?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文