В DotNetNuke, как я могу получить объект ModuleInfo, если у меня просто есть ModuleId (а не TabId) - PullRequest
2 голосов
/ 29 октября 2008

Единственный метод, предоставленный платформой DNN для получения модуля по идентификатору, также требует идентификатора вкладки. Что я могу сделать, если у меня нет идентификатора вкладки?

Ответы [ 3 ]

5 голосов
/ 29 октября 2008

Метод GetModule из класса DotNetNuke.Entities.Modules.ModuleController примет «нулевое» значение для идентификатора вкладки, если у вас нет идентификатора вкладки. То есть попробуйте следующее:

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

См. Также мой блог на эту тему .

3 голосов
/ 13 ноября 2008

При передаче нулевого TabId в GetModule следует обратить внимание на то, что если у вас есть модуль, установленный на нескольких различных вкладках, вы получите первую обратно, поэтому значения для TabId, TabModuleId и ModuleOrder будет основан на этом первом экземпляре, который может или не может быть тот экземпляр, который вы хотели.

НТН,

Don

0 голосов
/ 01 ноября 2008

Брайан, я только что посмотрел код для GetModule (), и в фреймворке нет никакого конкретного кода VB, который проверял бы, что tabid равен нулю. Тем не менее, интересно то, что хранимая процедура, являющаяся частью SqlDataProvider, выбирает строки из представления «Модули», которые имеют совпадающий идентификатор модуля, независимо от того, какой это табид ...

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 довольно бессмысленным, тебе не кажется?

...