Skip to content

Conversation

@donker
Copy link
Contributor

@donker donker commented Oct 3, 2025

Core Purpose

Introduces a new ASP.NET MVC-based rendering pipeline as an alternative to the traditional WebForms pipeline, allowing DNN to modernize its architecture while maintaining backward compatibility.

Key Features

Dual Pipeline Architecture:

  • Traditional WebForms pipeline continues through /default.aspx
  • New MVC pipeline routes through /DesktopModules/Default/Page/{tabId}/{locale}

Video showcase the general usage

Module Support:

More info about MVC Module Control Implementation
Razor Module Development Guide

  • HTML module converted to MVC
  • Sample modules demonstrating Razor+, MVC and SPA patterns

How to compile Samples

Configuration:

  • Pipeline selection at portal and page level
  • Settings UI integrated into Site and Page Settings
  • URL rewriter modifications to route based on pipeline settings

More info about MVC pipeline (routing / settings)

New MVC Pipeline Projects

DotNetNuke.Web.MvcPipeline.csproj - New core MVC pipeline library

  • Skins : Html Helpers (replacement for skin objects)
  • Containers : Html Helpers (replacement for skin objects for containers)
  • ModelFactories : construction of the Page Model (Model of the DefaultController)
  • ModuleControl : Module Control infrastructure
  • Utils : MvcViewEngine (Replacement for RazorEngine based on MVC 5 and can only be used inside HttpContext)
  • UI/Utilities : MvcClientAPI (replacement for ClientAPI for mvc)

Razor Module Sample

  • Razor-based module sample project

NewDDRMenu

  • Fork of DDRMenu for MVC navigation support (WIP)

Core Platform Projects

DotNetNuke.Library

  • Added Site and Page pipeline settings
  • Added Module Control settings
  • URL rewriter changes to route based on pipeline settings
  • Update SPA (Html5) to use new CDF

DotNetNuke.Abstractions

  • Added PagePipeline property to IPortalSettings

DotNetNuke.Web.Mvc

  • Integration with new MVC pipeline
  • Make actual DNN MVC modules run on the MVC Pipeline

HTML

  • Add support for MVC Pipeline rendering
  • Add MVC views and controllers
  • This is implemented as true MVC (with form tags) using AJAX

Dnn.PersonaBar.UI

UI for pipeline settings in Site and Page Settings

DNNConnect.CKE

  • HTML helper additions for CKEditor in MVC context

Skins/Aperture

  • Added mvc suport to the skin (Razor files)

Website

  • MVC Razor Layout
  • MVC Default skin
  • mvc.js minimal stuff needed for dnn to work
  • Terms and privacy pages (razor files)
  • DefaultController
  • ModuleActions Controller

AdminExperiance

  • settings ui for new settings
  • mvc controls for persona and edit bar

This PR is a first submission of the work of the MVC Pipeline team to bring the main project up to date with what has been developed in a forked repo.

Documentation

MVC Module Control Implementation
MVC pipeline (routing / settings)
Razor Module Development Guide
How to compile Samples

donker and others added 30 commits March 20, 2025 11:36
client dependecy for mvc (because it not exist in nuget)
@donker donker changed the title [WIP] First code submission for MVC Pipeline First code submission for MVC Pipeline Dec 17, 2025
donker and others added 12 commits December 20, 2025 10:26
# Conflicts:
#	DNN Platform/DotNetNuke.Web.Client/packages.config
#	DNN Platform/DotNetNuke.Web.Mvc/Framework/Controllers/DnnController.cs
#	DNN Platform/Library/Entities/Urls/AdvancedUrlRewriter.cs
#	DNN Platform/Providers/HtmlEditorProviders/DNNConnect.CKE/packages.config
#	Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Components/Pages/Converters.cs
# Conflicts:
#	Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Components/Pages/PagesControllerImpl.cs
@thienvc
Copy link
Contributor

thienvc commented Jan 1, 2026

This is fantastic, I've been waiting for this for a long time. It feels like DNN is experiencing a strong resurgence. I hope the core version is finalized soon so I can experience it and gradually migrate the webform modules.

sachatrauwaen and others added 2 commits January 3, 2026 21:26
move MvcPipeline outside of Support Project
rename querystring  mvcpage= yes/no to pipeline = mvc/webforms
@thienvc
Copy link
Contributor

thienvc commented Jan 8, 2026

In the classic webform version, we could use a .html skin and then DNN auto convert it to .ascx. Does the newer version still support this, as it automatically converts to .cshtml? I'm interested because I want to allow the portal admin to edit the portal theme without affecting host security.

@sachatrauwaen
Copy link
Contributor

In the classic webform version, we could use a .html skin and then DNN auto convert it to .ascx. Does the newer version still support this, as it automatically converts to .cshtml? I'm interested because I want to allow the portal admin to edit the portal theme without affecting host security.

In the first version the .cshtml skin need to be created manually.
But it is an option to generate the .ascx and .cshtml from the .html

@thienvc
Copy link
Contributor

thienvc commented Jan 8, 2026

In the classic webform version, we could use a .html skin and then DNN auto convert it to .ascx. Does the newer version still support this, as it automatically converts to .cshtml? I'm interested because I want to allow the portal admin to edit the portal theme without affecting host security.

In the first version the .cshtml skin need to be created manually. But it is an option to generate the .ascx and .cshtml from the .html

Great, when deploying multiple portals on the same host, I think allowing site administrators to customize the theme (skin) in .html format is standard practice, because if they were given permission to edit the skin in .ascc or .cshtml formats It's like giving them SuperUser privileges because it's too powerful.
In the future, I think we should only allow site administrators to install standard .html skins/themes to ensure overall security.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

7 participants