In DotNetNuke, come posso ottenere un oggetto ModuleInfo se ho solo un ModuleId (e non un TabId)
-
05-07-2019 - |
Domanda
L'unico metodo fornito dal framework DNN per ottenere un modulo tramite ID richiedeva anche un ID scheda. Cosa posso fare se non ho un ID scheda?
Soluzione
Il metodo GetModule al di fuori della classe DotNetNuke.Entities.Modules.ModuleController accetterà un " null " valore per ID scheda se non si dispone di un ID scheda. Cioè, prova quanto segue:
new ModuleController().GetModule(moduleId, DotNetNuke.Common.Utilities.Null.NullInteger)
Vedi anche il mio post sul blog su l'argomento .
Altri suggerimenti
Una cosa a cui prestare attenzione quando si passa un TabId null a GetModule è che se si dispone di un modulo installato su un numero di schede diverse, si otterrà il primo, quindi i valori per TabId, TabModuleId e ModuleOrder si baserà sulla prima istanza, che può essere o meno l'istanza desiderata.
HTH,
Don
Brian, ho appena dato un'occhiata al codice per GetModule (), e non c'è alcun codice VB specifico nel framework che controlla che il tabid sia nullo. La cosa interessante è che la procedura memorizzata che fa parte di SqlDataProvider seleziona le righe dalla vista Moduli che hanno un moduleid corrispondente, indipendentemente dal 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)
Se lo capisco correttamente, questo restituirebbe tutte le righe in cui moduleid è quello che hai specificato, indipendentemente dal fatto che @tabid sia nullo o meno. Questo rende @TabId piuttosto inutile, non credi?