【问题标题】:Using Named Routes with MapSpaFallbackRoute使用带有 MapSpaFallbackRoute 的命名路由
【发布时间】:2018-03-28 05:07:34
【问题描述】:

我在我的 ASP.NET Core SPA 中使用命名路由,如下所示:

[HttpGet("", Name = HomeControllerRouteName.GetIndex)]
public IActionResult Index() => this.View();

在我的Startup.cs 中,我使用MapSpaFallbackRoute 方法回退到单页应用程序以显示404 错误页面。它目前使用控制器和动作名称来确定回退路线,如下所示:

application.UseMvc(
    routes =>
    {
        routes.MapSpaFallbackRoute(
            name: "spa-fallback",
            defaults: new { controller = "Home", action = "Index" });
    });

我想在我的Startup.cs 中使用命名路由以保持一致性。如何实现?

【问题讨论】:

  • 您正在展示一个命名路线的示例(MapSpaFallbackRoute),因此不清楚您的问题是什么。
  • 你错了。那不是命名路线。它使用控制器和动作名称。
  • MapSpaFallbackRoute 具有(可选)name 参数的值。这意味着它是一条命名路线。您的第一个示例是一个名为 attribute 的路由。您是说要设置后备属性路由吗?

标签: asp.net asp.net-core asp.net-core-mvc asp.net-mvc-routing single-page-application


【解决方案1】:

示例来自:https://github.com/aspnet/JavaScriptServices/issues/973

有条件地映射 SPA 后备路由

// API Routes
       app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });

        // This route will never be mapped when route starts with api
        app.MapWhen(x => !x.Request.Path.Value.StartsWith("/api"), builder =>
        {
            builder.UseMvc(routes =>
            {
                routes.MapSpaFallbackRoute(
                    name: "spa-fallback",
                    defaults: new { controller = "Home", action = "Index" });
            });
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2018-03-15
    • 2020-09-24
    • 2013-06-24
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    相关资源
    最近更新 更多