2016-05-27 59 views
1

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

的一种方法是设置在mvc6启动路线:

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

然后控制器发出Request的到angular2。

但是,{* url}无法识别* .map和其他静态文件。 也有可能是scenarious,我想使用像静态页面Error.html等

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

回答

2

我面临同样的问题,并决定使用视图,而不是静态文件。

我有一个主控制器有2个操作设置MVC:索引和登录。

该应用程序boostraps在index.cshtml和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我已经(采用了棱角分明RC1):

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

http://localhost/Dashboard刷新页面,让我上仪表板视图,而http://localhost/Login将我重定向到登录页面,超出角度应用程序)。

希望这有助于

+1

是的,这aprouch也说明如下:https://channel9.msdn.com/Events/ASPNET-Events/ASPNET-Fall-Sessions/ASPNET--Spa – Brivvirs