Angular 2和MVC路由在一起

时间:2017-11-13 09:12:57

标签: angular asp.net-core

我已经使用Visual Studio 2017构建了一个Angular 2 SPA项目,并且我已经获得了以下路由代码。有人可以请你向我解释一下以下每条路线的独立作用:

app.UseMvc(routes =>
      {
          routes.MapRoute(
             name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
          routes.MapSpaFallbackRoute(
                name: "spa-fallback",
                defaults: new { controller = "Home", action = "Index" });
});

如果我删除第一个或第二个路由,一切都与两个路由一样。那么有两条路线的用途是什么?

1 个答案:

答案 0 :(得分:1)

第一条路线是标准的MVC路线,如果您收到" example.com/accounts/delete/123"的请求,请拨打"删除"对"帐户"的行动控制器和传递" 123"作为" id"的值参数。

第二条路由用于处理恰好发送到服务器的SPA(单页应用程序)路由。通常,当您单击Angular应用程序中的内部链接时,Angular路由器将拦截它而不向服务器发送请求。但是,如果您要复制,保存并稍后将该链接粘贴为浏览器中的URL,则会将其发送到服务器。

这"后退路线"告诉服务器,如果它获得了服务器上不存在的路由,而是将"索引"的结果发送回浏览器。对" Home"的行动控制器。这样做是因为SPA模板使用该方法返回包含Angular app标记的HTML。因此,Angular应用程序将重新加载,最终请求的内部链接将被路由到。

除非您在服务器上添加了其他控制器,或者在Home控制器上添加了其他操作方法,否则服务器上只有一个操作方法和一个控制器。这就是您当前可以删除任一路线并且您的应用仍然有效的原因。除非您删除了第二条路线,否则如果您将内部SPA链接复制并粘贴到浏览器中,则很可能会出现404错误。