asp.net mvc6 / angular2 路由

asp.net mvc6 / angular2 routing

我有 asp.net mvc6 项目。在客户端,我想使用 angular2 创建单页应用程序。这意味着我有两个地方可以定义路由。 就SPA而言,路由必须在angular2端,但是当用户刷新页面时如何处理? MVC returns 404.

一种方法是在 mvc6 中设置启动路径:

 routes.MapRoute(
            name: "spa-fallback",
            template: "{*url}",
            defaults: new { controller = "OAuth", action = "Index" });
        });

然后控制器将 Request.Path 给 angular2.

然而这个{*url}不识别*.map和其他静态文件。 也可能有我想使用静态页面的场景 Error.html 等

有没有更好的方法来处理双方 (server/client) 的路由?

我遇到了同样的问题,因此决定使用视图而不是静态文件。

我已经使用一个具有 2 个操作的家庭控制器设置了 MVC:索引和登录。

index.cshtml 和 login.cshtml 中的应用程序 boostraps 是一个简单的登录页面。

我的 startup.cs 文件中的路由是这样配置的:

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "login",
                template: "login",
                defaults: new { controller = "Home", action = "Login" });
            routes.MapRoute(
                 name: "spa-fallback",
                 template: "{*url}",
                 defaults: new { controller = "Home", action = "Index" });
        });

在我的 AppComponent 中(使用 Angular RC1):

@Routes([
    { path: '/Dashboard', component: Dashboard}
])

http://localhost/Dashboard keeps me on the dashboard view, whereas http://localhost/Login 中刷新页面会将我重定向到 angular 应用程序之外的登录页面。

希望对您有所帮助