使用带有MapSpaFallbackRoute的命名路由

Muh*_*eed 5 asp.net asp.net-mvc-routing single-page-application asp.net-core-mvc asp.net-core

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

[HttpGet("", Name = HomeControllerRouteName.GetIndex)]
public IActionResult Index() => this.View();
Run Code Online (Sandbox Code Playgroud)

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

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

Startup.cs为了保持一致性,我想在命令路由中使用命名路由.怎么能实现这一目标?

Asa*_*lik 0

示例取自: 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" });
            });
        });
Run Code Online (Sandbox Code Playgroud)