Frage

Die nur durch den DNN Rahmen vorgesehen Verfahren ein Modul von ID zu erhalten benötigt auch eine Registerkarte ID. Was kann ich tun, wenn ich nicht Haben eine Registerkarte ID?

War es hilfreich?

Lösung

Die GetModule Methode aus der DotNetNuke.Entities.Modules.ModuleController Klasse wird eine „Null“ Wert für Reiter ID akzeptieren, wenn Sie nicht über eine Registerkarte ID haben. Das heißt, versuchen Sie Folgendes:

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

Siehe auch meine Blog-Post auf Gegenstand .

Andere Tipps

Eines ist zu beachten, wenn ein Null-tabid zu GetModule vorbei ist, dass wenn Sie ein Modul haben, die auf einer Reihe von verschiedenen Registerkarten installiert sind, werden Sie das erste zurückbekommen, so dass die Werte für tabid, TabModuleId und ModuleOrder wird an dieser ersten Instanz beruht, die nicht die Instanz sein kann oder man wollte.

HTH,

Don

Brian, ich habe gerade einen Blick auf den Code für GetModule (), und es gibt keine spezifischen VB-Code in dem Rahmen, der für die tabid ist null überprüft. Was allerdings interessant ist, dass die gespeicherte Prozedur, der Teil des SqlDataProvider ist wählt Zeilen aus der Sicht Module, die eine passende moduleid haben, egal was tabid ist ...

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)

Wenn ich das richtig verstehen, das alle Zeilen zurückgeben würde, wo moduleid derjenige ist, von Ihnen angegebenen, egal ob @tabid null ist oder nicht. Das macht die @TabId ziemlich sinnlos, findest du nicht?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top