Skip to content

[Enhancement]: MVC Page Pipeline (routing / selection) #6682

@sachatrauwaen

Description

@sachatrauwaen

Is there an existing issue for this?

  • I have searched the existing issues

Description of problem

At this moment the pipeline selection is done by MVC tag in page settings for normal pages (without ctl query parameter) and this was a tempory hack.

Other pages (with ctl query parameter) can run on the mvc pipeline based on a query string parameter (mvcpage=yes/no) that need to be added to the url.

For modules ctl pages it's the module developer than define it, actually per pipeline.
For core ctl pages, it's defined in the core (without configuration), actually per pipeline.

This routing / selection is done in the urlrewriter. Actually there exist a tempory new rewriter for mvc. This need to be merged with the default dnn rewriter.

The skin is expected to have the corresponding razor skin.

Nice to have : Standad created pages (search result,404, profile pages ) ? forced to webforms by default to not rely on portal settings except search because it will support mvc pipeline.

Description of solution

1. Normal page with multiple module.

  • Portal settings : Page Pipeline = Webforms (default)/MVC/Auto
Image
  • Page settings : Page Pipeline = Webforms/MVC/Inherit from portal (default)
Image

In this solution the rendering pipeline is decided by a switch on the page settings. This will be combined with a master switch at portal. But the general idea is that this decides which rendering pipeline is used. Modules that do not support MVC will render a blue warning for admin users.
Note this solution could be augmented with a "test button" which analyses a page before you can switch it to MVC.

Automatic : this expands on the previous option by having the pipeline examine the modules on the page and deciding accordingly whether to use MVC pipeline or not. Would need work out to see how we could determine this and how to cache the choice so we don't have unnecessary processing.

Advantages:

  • Close to the current solution

Disadvantages

  • It is a technical feature which has the potential to confuse end users in the page settings
  • No fallback in case skin is not hybrid (how to detect this to avoid mishaps?)

Webforms will be the fallback.

2. Module Control pages (pages with ctrl and mid query parameter in the url) with only one module on the page.

The module developer need to create the URL with extra query parameter (mvcpage=yes) for module controls that supports MVC. Typically in the method that create the module actions.

Advantages :

  • no overhead in the urlrewriter. No need to read module information to determine the pipeline.
  • give the possibility to mix mvc and webform pipeline module controls for progressive module migration to mvc pipeline.

Disadvantages

  • not automatic

Description of alternatives considered

  • selection based on skin (need a lot of core modifications and mix of 2 concepts layout and pipeline)

Anything else?

Needs db schema updates and UI updates in de persona bar

More info about MVC Pipeline

Do you plan to contribute code for this enhancement?

  • Yes

Would you be interested in sponsoring this enhancement?

  • Yes

Code of Conduct

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

Projects

Status

In review

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions