2008-10-29 14 views

回答

4

如果您沒有選項卡ID,則DotNetNuke.Entities.Modules.ModuleController類的GetModule方法將接受標籤ID的「null」值。也就是說,請嘗試以下操作:

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

另請參閱my blog post on the subject

-1

Brian,我只是看了一下GetModule()的代碼,在框架中沒有檢查tabid爲空的任何特定的VB代碼。有趣的是,雖然那是的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) 

如果我理解正確這,這將返回無論@tabid是否爲null,所有模塊都是您指定的行。這使@TabId毫無意義,你不覺得嗎?

+0

首先,在的SqlDataProvider,它呼籲TabId參數,這將轉化Null.NullInteger GetNull()來爲DBNull – bdukes 2008-11-03 14:57:40

2

將空TabId傳遞給GetModule時要注意的一件事是,如果您的模塊安裝在多個不同的選項卡上,您將獲得第一個選項,所以TabId,TabModuleId而ModuleOrder將基於第一個實例,可能是也可能不是您想要的實例。

HTH,

相關問題