剃刀页面动态路由

时间:2020-07-27 09:51:54

标签: routes razor-pages asp.net-core-3.1

我正在尝试实现以下方案: 请求了网址https://www.example.com/[some_value] 如果[some_value]是已知的(我有一个列表),则应将其路由(不重定向且url中没有更改) https://www.example.com/page,其中“网页”为[some_value]

否则,如果未知, 它应该重定向到

https://www.example.com/y/[some_value],其中“ y”是固定的。

我添加了以下内容:

            {
                endpoints.MapControllerRoute("api", "api/{**path}");

                
                // endpoints.MapRazorPages();
                endpoints.MapDynamicPageRoute<RouteTranslator>("{page}");

            });

和我的routeTranslator:

 public class RouteTranslator : DynamicRouteValueTransformer
    {
        public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
        {
            if ( values.Keys.Contains("page") )
            {
                var page = values["page"]?.ToString();
                if ( page!= null )
                {
                    switch (page)
                    {
                         case "KNOWN_VALUE":
                            //Do nothing
                            break;
                            default:
                                values["page"] = "y";
                                values["some_value"] =  page;
                                
                            break;
                    }
                }
            }

            
            return values;

        }

    }

我测试了是否在路由翻译器中找到了代码,但是得到了404。如果我请求/ y / [some_value],则会收到具有所需响应的答复。 我想念什么?

0 个答案:

没有答案