Cómo crear controles ASCX para DotNetNuke y publicarlos?

Resumen ASP.NET 5
9 December, 2014
Ver todo

Cómo crear controles ASCX para DotNetNuke y publicarlos?

Durante varios años llevamos trabajando en DotNetNuke (DNN) con uno de nuestros clientes y, aunque al principio fue un poco extraño, nos adaptamos, no solo a este manejador de contenido, sino también a la forma de trabajo de ellos. A través de esos años, varios recursos nuestros han trabajado en algún requerimiento puntual o extenso sobre esta plataforma y siempre se llegaba a la misma pregunta: “Cómo publico mi Control de Usuario en DNN?” Como respuesta a esa pregunta siempre se enviaba un correo o nos sentábamos con la persona a explicarle cómo hacerlo, pero, la última que entró a realizar algo puntual dijo: “Usted debería hacer un video o un blog explicando esto” y es ahí donde se decide dar inicio a nuestro blog, creando una herramienta que nuevos recursos de nuestra compañía usarán al trabajar con este manejador de contenido y también para cualquier lector externo que esté buscando lo mismo eventualmente.

Antes de empezar, se da entendido que ya existe una instalación de DNN en el IIS (Internet Information Services) local y desde ahí, se abre en Visual Studio 2017.

Ya entrando en materia, lo que haremos será crear un Control de Usuario con el típico Hola Mundo. Dentro de la carpeta DesktopModules crearemos otra llamada A_Prueba y dentro un control de usuario llamado ucHolaMundo.ascx.

Dentro del Code Behind del control, se debe cambiar la clase de herencia. En DNN, la clase a usar es PortalModuleBase que provee propiedades y métodos dentro del contexto del manejador de contenido. La más básica es UserInfo que tiene toda la información del usuario conectado. Además, es la usada por DNN para manejar los controles. Si no se coloca esta clase, generará un error a la hora de colocarlo en alguna página (más adelante lo visualizaremos).

Dentro del control, colocaremos una caja de texto para recibir el nombre y un botón que saludará. Finalmente, el control quedaría así en el ASCX:

Y en el Code Behind así:

Listo! Ya es hora de crear el módulo en DNN. Para ello entraremos en el navegador a la aplicación del IIS Local (para este caso la aplicación se llama DNN_SQL2008) e ingresamos con el usuario host.

Entramos al menú superior Host y damos clic a Extensions.

Luego damos clic en Create New Extension.

En el listado Select Extension Type seleccionamos Module y se llena la información restante con datos claros que identifiquen el control y damos clic en Next.

En la siguiente pantalla no es necesario realizar nada. Es claro que se pueden colocar algunas configuraciones como la capacidad de ser compartida a través de diferentes sitios, la categoría del módulo, etc. Ya dependerá de las necesidades propias, pero para este caso no es necesario cambiar alguna configuración de las que están ahí por defecto y se da clic en el botón Next.

Luego se coloca la información de la persona dueña del módulo. No es información obligatoria, así que se da clic en Next.

Con esto se finalizaría la creación del módulo. Luego se debe buscar el registro en la tabla y editarlo para asignarle el control de usuario que se debe usar como base de este.

Se colapsa la sección Module Settings, se despliega Module Definitions y se da clic en Add Definition.

Lastimosamente, la sección Module Definitions,por cada clic se cerrará así que habrá que seguir expandiéndola. En este caso, colocamos el nombre que se le dará a la Definición del Módulo y se da clic en Create Definition.

Nuevamente se debe desplegar Module Definitions y se da clic en Add Module Control.

En el formulario que se despliega, se debe seleccionar en la lista Source Folder la carpeta donde se encuentra el Control de Usuario. En este caso, buscamos A_Prueba.

Y en la lista Source se selecciona el control ucHolaMundo.ascx

Ya no hay necesidad de cambiar ningún otro campo y se da clic en Update.

Para verificar, se despliega nuevamente la sección Module Definitions y en la tabla ya aparecerá el control.

Finalmente se da clic en Update Extension.

Con estos pasos, ya estaría creado el control en DNN. Ahora se creará una página dentro de la Menú Home donde agregaremos el control. Para ello, se entra en el menú superior Admin y se da clic en Page Management.

En el árbol que aparece en la parte izquierda, sobre el nodo Home se da clic derecho y luego clic en Add Page.

Se ingresa el nombre de la página y luego se da clic en Create Page(s).

En caso de que la página haya sido creada deshabilitada, se debe dejar el check vacío en el campo Disable y luego dar clic en el botón Update Page.

Luego ya al pasar sobre el menú Home veremos la nueva página.

Entramos a la página y en la parte superior damos clic en la sección Modules y luego en Add Module.

Y buscamos el control creado (En este caso Hola Mundo Blog).

Nos paramos sobre el control y en la parte superior derecha aparecerá una cruz. Sobre ella aparecerá un menú en el cual nos mostrará las diferentes secciones que hay dentro de la página (Dependerá de la distribución que se tenga configurado en el template del sitio). Para facilidad, seleccionamos Content Pane el cual hace referencia al centro de la página.

Cerramos la sección Modules y ya en la página veremos el control creado.

Si hubiésemos creado el control con la clase UserControl como base,

generaría el siguiente error a la hora de ingresarlo a la página.

Es por eso que se debe heredar de la clase PortalModuleBase.

Finalmente, lo único que queda es probar el control.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *