关于 asp.net mvc 5:尝试在 umbraco 7.5.3 中实现自定义路由,但未触发覆盖方法 FindContent

Trying to implement a custom route in umbraco 7.5.3 but the overrided method FindContent does not get fired

我试图将渲染模型模型检索到我的自定义劫持方法中,但我总是得到空值。两个可选参数是正确的。

这是我的自定义路线:

1
2
3
4
5
6
7
8
9
10
11
12
RouteTable.Routes.MapRoute(
       "umbracoRoute",
       "token-verification/{action}/{userId}/{code}",
        new
        {
            controller ="ExternalLinkOperations",
            action ="",
            userId = UrlParameter.Optional,
            code = UrlParameter.Optional
        },
        new ConfirmEmailRouteHandler(3290)
        );

这是 ConfirmEmailRouteHandler 类:

1
2
3
4
5
6
7
8
9
10
11
public class ConfirmEmailRouteHandler: UmbracoVirtualNodeByIdRouteHandler
{
    public ConfirmEmailRouteHandler(int realNodeId) : base(realNodeId)
    {
    }

    protected override IPublishedContent FindContent(RequestContext requestContext, UmbracoContext umbracoContext, IPublishedContent baseContent)
    {
        return base.FindContent(requestContext, umbracoContext, baseContent);
    }
}

这是从 rendermodel 继承的 ExternalLinkOperationsController 中的方法:

1
2
3
[AllowAnonymous]
public async Task<ActionResult> ConfirmEmail(RenderModel model, string userId, string code)
{}

所以我没有得到模型参数只有两个可选参数,我可能做错了什么,我也试着做这个

1
 new UmbracoVirtualNodeByIdRouteHandler(3290)

而不是

1
new ConfirmEmailRouteHandler(3290),

但没有成功,我使用的是 umbraco v 7.5.3。在任何时候调试代码重写的方法 FindContent 被触发,只有当构造函数.

在此先感谢您的帮助


我没有意识到路由属性不正确,我有 RouteTable.Routes.MapRoute,我应该使用 RouteTable.Routes.MapUmbracoRoute

Shannon Deminick 的回答在这里!