2016-05-27 8 views
1

私はasp.net mvc6プロジェクトを持っています。クライアント側では、angle2を使用して単一ページアプリケーションを作成したいと考えています。つまり、ルーティングを定義できる場所は2つあります。 SPAのように、ルーティングはangular2側にある必要がありますが、ユーザーがページを更新している場合の対処方法は?asp.net mvc6/angular2 routing

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

そして、コントローラは、angular2にRequest.Pathを与える:MVCは404

一つの方法は、mvc6でスタートアップルートを設定することです戻ります。

ただし、この{* url}は* .mapやその他の静的ファイルを認識しません。 また、私はError.htmlのような静的なページを使用したいと思います。

両方の(サーバー/クライアント)側でルーティングを処理する方法はありますか?

答えて

2

私は同じ問題に直面しており、静的ファイルの代わりにビューを使用することに決めました。

インデックスとログインの2つのアクションを持つ1つのホームコントローラでセットアップMVCがあります。

このアプリはindex.cshtmlのboostrapsで、login.cshtmlは簡単なログインページです。上で私を続け

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

http://localhost/Dashboardでページを更新:私のAppComponentで

 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" }); 
     }); 

私は(角RC1を使用して)している:私のstartup.csファイル内

ルーティングは、このように設定されていますダッシュボードの表示になりますが、http://localhost/Loginは角形のアプリからログインページにリダイレクトされます)。 https://channel9.msdn.com/Events/ASPNET-Events/ASPNET-Fall-Sessions/ASPNET--Spa:

ホープこれは

+1

はい、このaprouchもここに記述されているのに役立ちます – Brivvirs