Skip to content

First code submission for MVC Pipeline#6749

Open
donker wants to merge 271 commits into
feature/mvc-pipelinefrom
feature/mvc-pipeline-old
Open

First code submission for MVC Pipeline#6749
donker wants to merge 271 commits into
feature/mvc-pipelinefrom
feature/mvc-pipeline-old

Conversation

@donker

@donker donker commented Oct 3, 2025

Copy link
Copy Markdown
Contributor

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/MvcPipeline/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)

DDRMenu

  • Adapted to suport MVC Pipeline

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)

Skin conversion guide

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

DNN MVC Pipeline - Developer User Guide


Review Tasklist

  • Walkthrough: Ask the author for a live, screen-share session for explaining the high-level intent, architectural changes, and where the high-risk logic lives.

1) Prerequirement, Build and packaging (9 folders, A: 2, M: 9)

  • DNN Platform/Library/Properties
  • DNN Platform/Library/UI/UserControls
  • DNN Platform/Library/Services/Tokens
  • DNN Platform/Library/Services/Tokens/PropertyAccess
  • DNN Platform/Library/UI/Modules
  • DNN Platform/DotNetNuke.ContentSecurityPolicy
  • DNN Platform/DotNetNuke.ContentSecurityPolicy/Properties
  • Build/Tasks
  • DNN Platform/Components/Microsoft.AspNetMvc

2) Settings (portal, page, modules) (19 folders, A: 3, M: 29)

  • DNN Platform/DotNetNuke.Abstractions/Portals
  • DNN Platform/Library/Entities/Modules
  • DNN Platform/Library/Entities/Portals
  • DNN Platform/Library/Entities/Tabs
  • DNN Platform/Library/Data
  • DNN Platform/Library/Services/Upgrade
  • DNN Platform/Library/Services/Installer/Writers
  • Dnn.AdminExperience/ClientSide/Pages.Web/src/components/More
  • Dnn.AdminExperience/ClientSide/Pages.Web/src/services
  • Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Components/Pages
  • Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Services/DTO/SiteSettings
  • Dnn.AdminExperience/Dnn.PersonaBar.Extensions/admin/personaBar/Dnn.Pages/App_LocalResources
  • Dnn.AdminExperience/Dnn.PersonaBar.Extensions/admin/personaBar/Dnn.SiteSettings/App_LocalResources
  • Dnn.AdminExperience/ClientSide/Extensions.Web/src/components/EditExtension/CustomSettings/Module/ModuleDefinitions/ModuleDefinitionRow/Controls
  • Dnn.AdminExperience/ClientSide/SiteSettings.Web/src/components/moreSettings
  • Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Components/Extensions/Dto/Editors
  • Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Services
  • Dnn.AdminExperience/Dnn.PersonaBar.Extensions/Services/DTO
  • Dnn.AdminExperience/Dnn.PersonaBar.Extensions/admin/personaBar/Dnn.Extensions/App_LocalResources
  • DNN Platform/Website/Providers/DataProviders/SqlDataProvider

3) Rewriter (1 folders, A: 0, M: 1)

  • DNN Platform/Library/Entities/Urls

4) MvcPipeline (19 folders, A: 108, M: 0)

  • DNN Platform/DotNetNuke.Web.MvcPipeline
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Containers
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Controllers
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Exceptions
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Extensions
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Framework
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Framework/JavascriptLibraries
  • DNN Platform/DotNetNuke.Web.MvcPipeline/ModelFactories
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Models
  • DNN Platform/DotNetNuke.Web.MvcPipeline/ModuleControl
  • DNN Platform/DotNetNuke.Web.MvcPipeline/ModuleControl/Page
  • DNN Platform/DotNetNuke.Web.MvcPipeline/ModuleControl/Razor
  • DNN Platform/DotNetNuke.Web.MvcPipeline/ModuleControl/WebForms
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Modules
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Pages
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Routing
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Skins
  • DNN Platform/DotNetNuke.Web.MvcPipeline/UI/Utilities
  • DNN Platform/DotNetNuke.Web.MvcPipeline/Utils

5) Website & Admin (17 folders, A: 23, M: 5)

  • DNN Platform/Website
  • DNN Platform/Website/Controllers
  • DNN Platform/Website/Models
  • DNN Platform/Website/Resources/Shared/scripts/jquery
  • DNN Platform/Website/Views
  • DNN Platform/Website/Views/Default
  • DNN Platform/Website/Views/PersonaBarContainer
  • DNN Platform/Website/admin/Portal/Controls
  • DNN Platform/Website/admin/Portal/Views
  • DNN Platform/Website/js
  • Dnn.AdminExperience/EditBar/Dnn.EditBar.UI
  • Dnn.AdminExperience/EditBar/Dnn.EditBar.UI/Mvc
  • Dnn.AdminExperience/Library/Dnn.PersonaBar.UI
  • Dnn.AdminExperience/Library/Dnn.PersonaBar.UI/admin/personaBar/Mvc

6) HtmlEditorProviders (3 folders, A: 2, M: 2)

  • DNN Platform/Providers/HtmlEditorProviders/DNNConnect.CKE
  • DNN Platform/Providers/HtmlEditorProviders/DNNConnect.CKE/Utilities
  • DNN Platform/Providers/HtmlEditorProviders/DNNConnect.CKE/Web

7) DDRMenu (4 folders, A: 2, M: 12)

  • DNN Platform/Modules/DDRMenu
  • DNN Platform/Modules/DDRMenu/Common
  • DNN Platform/Modules/DDRMenu/Properties
  • DNN Platform/Modules/DDRMenu/TemplateEngine

8) HTML (8 folders, A: 19, M: 7)

  • DNN Platform/Modules/HTML
  • DNN Platform/Modules/HTML/Components
  • DNN Platform/Modules/HTML/Controllers
  • DNN Platform/Modules/HTML/Controls
  • DNN Platform/Modules/HTML/Models
  • DNN Platform/Modules/HTML/Mvc
  • DNN Platform/Modules/HTML/Views
  • DNN Platform/Modules/HTML/js

9) Skins (6 folders, A: 17, M: 1)

  • DNN Platform/Website/Portals/_default/Containers/_default/Views
  • DNN Platform/Website/Portals/_default/Skins/_default/Views
  • DNN Platform/Skins/Aperture
  • DNN Platform/Skins/Aperture/Views
  • DNN Platform/Skins/Aperture/Views/partials
  • DNN Platform/Skins/Aperture/containers/Views

Not distributed (not critical)

10) Samples (13 folders, A: 25, M: 7)

  • DNN Platform/Modules/Samples/Dnn.ContactList.Mvc
  • DNN Platform/Modules/Samples/Dnn.ContactList.Mvc/Controllers
  • DNN Platform/Modules/Samples/Dnn.ContactList.Mvc/Controls
  • DNN Platform/Modules/Samples/Dnn.ContactList.Mvc/Views/Contact
  • DNN Platform/Modules/Samples/Dnn.ContactList.Razor
  • DNN Platform/Modules/Samples/Dnn.ContactList.Razor/App_LocalResources
  • DNN Platform/Modules/Samples/Dnn.ContactList.Razor/Controls
  • DNN Platform/Modules/Samples/Dnn.ContactList.Razor/Models
  • DNN Platform/Modules/Samples/Dnn.ContactList.Razor/Properties
  • DNN Platform/Modules/Samples/Dnn.ContactList.Razor/Services
  • DNN Platform/Modules/Samples/Dnn.ContactList.Razor/Views
  • DNN Platform/Modules/Samples/Dnn.ContactList.Razor/js
  • DNN Platform/Modules/Samples/Dnn.ContactList.Spa

Can be moved to other PR (we can start only with Razor+)

11) SPA Modules Support (1 folders, A: 0, M: 4)

  • DNN Platform/Library/UI/Modules/Html5

12) MVC Modules Support (5 folders, A: 0, M: 5)

  • DNN Platform/DotNetNuke.Web.Mvc/Framework/ActionResults
  • DNN Platform/DotNetNuke.Web.Mvc/Framework/Controllers
  • DNN Platform/DotNetNuke.Web.Mvc/Framework/Modules
  • DNN Platform/DotNetNuke.Web.Mvc/Properties
  • DNN Platform/DotNetNuke.Web.Mvc/Routing

Loading
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