es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener el TabId/ModuleId de la página actual en el host de scripts razor de DNN.

Tenemos varias páginas de DNN (última versión) que utilizan el módulo de secuencias de comandos Razor (compartido), configurado para el mismo archivo cshtml. El script incorpora contenido externo que siempre ha sido el mismo en cada página. Ahora necesitamos que el contenido sea contextual para cada página. No veo una forma de agregar una entrada de configuración al módulo de secuencias de comandos y preferiría evitar un script separado para cada página.

¿Existe alguna forma de obtener el TabId, ModuleId, nombre de la página u otro valor identificativo en el script? Tenemos otras páginas Razor que hacen referencia a DotNetNuke.UI.Modules.ModuleInstanceContext y utilizan TabId o ModuleId, pero no veo una forma de obtener una instancia en este contexto.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de obtener el TabId, ModuleId, nombre de la página u otro valor identificativo en el script. Puedes usar la clase DotNetNuke.Services.Tokens.TokenReplace para reemplazar tokens en tu archivo cshtml con valores del contexto actual. Por ejemplo, puedes utilizar {TabId} o {ModuleId} en tu archivo cshtml y reemplazar estos tokens con los valores reales utilizando el método TokenReplace.ReplaceTokens.

    Para obtener una instancia de ModuleInstanceContext, puedes utilizar la clase DotNetNuke.Entities.Modules.ModuleController para obtener el módulo de contexto actual y luego obtener su contexto de instancia. Aquí tienes un ejemplo de código:

    var moduleId = Convert.ToInt32(Page.Request.QueryString["moduleId"]);
    var moduleInfo = new ModuleController().GetModule(moduleId);
    var moduleContext = ModuleInstanceContextFactory.CreateModuleInstanceContext(moduleInfo);
    

    Ten en cuenta que necesitarás pasar el parámetro moduleId para obtener el contexto del módulo correcto. Puedes reemplazar {ModuleId} en tu archivo cshtml con este valor para generar dinámicamente contenido específico del contexto.

Comments are closed.