DEV Community

Martin Soderlund Ek
Martin Soderlund Ek

Posted on

Partial Routing in Optimizely 12

If you need to implement partial routing in Optimizely CMS 12, this is a good start.

There are of course some breaking changes as per the documentation:

The interface IPartialRouter changed slightly, and implementations should now be registered in DI container as IPartialRouter, rather than the previous way to register a partial router, which was through the extension method RegisterPartialRoute on RouteCollection.

OK, lets start with adding a partial router class which implements IPartialRouter:

public class MyPagePartialRouter : IPartialRouter<MyPage, MyPage>
    {
        public MyPagePartialRouter() { }

        public object RoutePartial(MyPage content, UrlResolverContext urlResolverContext)
        {
            urlResolverContext.RouteValues.Add("requestPath", urlResolverContext.RemainingSegments);
            urlResolverContext.RemainingSegments = Array.Empty<Char>();
            return content;
        }

        public PartialRouteData GetPartialVirtualPath(MyPage content, UrlGeneratorContext urlGeneratorContext)
        {
            return null;
        }
    }
Enter fullscreen mode Exit fullscreen mode

We add our params to the RouteValues collection. Note we use RemainingSegments instead of RemainingPath.

Then we need to register it in a DI container like this:

services.AddSingleton<IPartialRouter, MyPagePartialRouter>();

And that's it!

Top comments (0)