【问题标题】:Is there a way to do dynamic routing with Razor Pages?有没有办法使用 Razor Pages 进行动态路由?
【发布时间】:2020-04-07 07:40:45
【问题描述】:

我正在寻找类似的东西

app.UseEndpoints(endpoints =>
            {
                endpoints.MapDynamicControllerRoute<MyTransformer>($"{store}/{controller}/{action}");
            });

但对于剃刀页面路由。我挖掘了 AddRazorPagesOptions 约定,但似乎没有什么突出的。检查了 Github 和谷歌。那里也没找到太多。

【问题讨论】:

    标签: asp.net-core razor routing asp.net-core-mvc razor-pages


    【解决方案1】:

    回答我自己的问题。看起来有一个适用于 Razor 页面的 MapDynamicPageRoute。你只需要使用“page”键而不是“controller”和“action”。

    public class MyTransformer : DynamicRouteValueTransformer
    {
        public MyTransformer()
        {
    
        }
    
        public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext
               httpContext, RouteValueDictionary values)
        {
            return await Task.Run(() =>
            {
                var rng = new Random();
                if (rng.NextDouble() < 0.5)
                {
                    values["page"] = "/MyRazorPageA";
                }
                else
                {
                    values["page"] = "/MyRazorPageB";
                }
    
    
                return values;
            });
        }
    }
    

    您还必须使用 MapDynamicPageRoute 注册转换器端点,例如

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
        endpoints.MapDynamicPageRoute<MyTransformer>("rando/{path?}");
    });
    

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 2014-11-14
      • 2018-12-05
      • 2018-02-17
      • 2019-07-27
      • 2018-07-18
      • 2019-04-10
      • 2015-03-31
      • 1970-01-01
      相关资源
      最近更新 更多