【问题标题】:asp.net mvc6 / angular2 routingasp.net mvc6 / angular2 路由
【发布时间】:2016-06-10 23:26:27
【问题描述】:

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

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

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

然后控制器将 Request.Path 提供给 angular2。

但是这个 {*url} 不能识别 *.map 和其他静态文件。 也可能存在我想使用静态页面(如 Error.html 等)的场景。

有没有更好的方法来处理(服务器/客户端)双方的路由?

【问题讨论】:

    标签: asp.net-mvc-routing angular2-routing


    【解决方案1】:

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

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

    index.cshtml 中的 app boostraps 和 login.cshtml 是一个简单的登录页面。

    我的 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 中的页面使我保持在仪表板视图中,而http://localhost/Login 将我重定向到登录页面,超出角度应用程序)。

    希望对你有帮助

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 2017-12-03
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多