In DotNetNuke, wie kann ich ein Objekt Module, wenn ich nur eine ModuleId (und kein tabid)
-
05-07-2019 - |
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?
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?