あなたが見ている問題は、クライアントの Angular ルーティングと MVC サーバー側のルーティングの違いに関係しています。404 Page Not Found
サーバーにはそのルートのコントローラーとアクションがないため、実際にはエラーが発生しています。エラーを処理していないと思われるため、何も起こらないように見えます。
リロードするときhttp://localhost:5000/aboutus
、またはショートカットから直接その URL にリンクしようとしたり、アドレス バーに入力して (ディープ リンク)、その URL にリンクしようとすると、サーバーに要求が送信されます。ASP.NET MVC はそのルートを解決しようとし、あなたの場合aboutusController
はアクションをロードして実行しようとしますIndex
。もちろん、aboutus
ルートは Angular コンポーネントであるため、これは望ましくありません。
すべきことは、ASP.NET MVC ルーターが Angular によって解決されるべき URL をクライアントに戻す方法を作成することです。
Startup.cs
ファイルのConfigure()
メソッドで、「spa-fallback」ルートを既存のルートに追加します。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
// when the user types in a link handled by client side routing to the address bar
// or refreshes the page, that triggers the server routing. The server should pass
// that onto the client, so Angular can handle the route
routes.MapRoute(
name: "spa-fallback",
template: "{*url}",
defaults: new { controller = "Home", action = "Index" }
);
});
最終的に Angular アプリをロードする Controller と View を指すキャッチオール ルートを作成することで、サーバーが処理しない URL を適切なルーティングのためにクライアントに渡すことができます。