2016-05-27 144 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