ID でモジュールを取得するために DNN フレームワークが提供する唯一の方法でも、タブ ID が必要でした。タブ IDがない場合はどうすればよいですか?
3 に答える
タブ ID がない場合、DotNetNuke.Entities.Modules.ModuleController クラスの GetModule メソッドはタブ ID の「null」値を受け入れます。つまり、次のことを試してください。
new ModuleController().GetModule(moduleId, DotNetNuke.Common.Utilities.Null.NullInteger)
件名に関する私のブログ投稿も参照してください。
null の TabId を GetModule に渡すときに注意すべきことの 1 つは、多数の異なるタブにインストールされているモジュールがある場合、最初のタブが返されるため、TabId、TabModuleId、および ModuleOrder の値は次のようになるということです。その最初のインスタンスに基づいて、必要なインスタンスである場合とそうでない場合があります。
HTH、
ドン
ブライアン、私は GetModule() のコードを見てみましたが、タブ ID が null であることをチェックする特定の VB コードがフレームワークにありません。興味深いのは、SqlDataProvider の一部であるストアド プロシージャが、タブ ID に関係なく、一致するモジュール ID を持つモジュール ビューから行を選択することです...
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 をかなり無意味にしますね。