首页 > 解决方案 > ASP.NET Core + Angular 静态路由

问题描述

我已经创建了默认的 ASP.NET Core + Angular 项目。我只需要通过链接/角度打开角度应用程序。此外,当角度路由也必须位于 /angular 链接下时,例如“/angular/profile” - 个人资料页面,“/angular/item/22” - 带有项目的页面。通过不包含“/angular”的链接,我需要打开静态文件或 MVC 视图。

默认项目使用 SPA,所以我不想更改它。

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
        spa.UseAngularCliServer(npmScript: "start");
    }
});

有什么解决办法吗?

标签: c#angularasp.net-coreasp.net-core-mvc

解决方案


如果要指定从 Angular ClientApp 文件夹查看的基本 URL,请尝试 通过转到ClientApp > src > index.htmlhref来设置属性,如下所示:base

<head>
 <meta charset="utf-8">
 <title>ClientApp</title>
 <base href="/angular">

 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>

之后,网址是这样的:

在此处输入图像描述

无需更改 UseSpa 方法,我的 UseSpa() 方法如下:

        app.UseSpa(spa =>
        {
            // To learn more about options for serving an Angular SPA from ASP.NET Core,
            // see https://go.microsoft.com/fwlink/?linkid=864501 
            spa.Options.SourcePath = "ClientApp";

            if (env.IsDevelopment())
            {
                spa.UseAngularCliServer(npmScript: "start");
            }
        });

推荐阅读