2017-01-28 11 views
2

MVC 5と角度2を使用したシングルページアプリケーションに取り組んでいます。MVC 5で複数のルートを同じアクションメソッドに設定する方法はありますか?

私の要件は同じコントローラ/アクションメソッドに複数のルートを設定する必要があります。

ユーザがURL http://localhost:xxxx/home/indexを入力すると、「ホーム」コントローラの「インデックス」アクションメソッドをターゲットにします。

私も "http://localhost:xxxx/products"と "http://localhost:xxxx/categories"は "ホーム"コントローラの "index"アクションメソッドを指します。

注:「製品」と「カテゴリ」はどちらも、ネイティブのコントローラーまたはアクションメソッドです。

+0

コントローラーやアクションメソッドではない場合はどうなりますか? – Luke

+0

彼らは私のクライアントサイドの2つのルートです、私が直面している問題は、ユーザーがブラウザをリフレッシュしたときに404エラーを表示することです – refactor

答えて

2

以下の2つのルートを追加すると、ジョブが実行されました。

 routes.MapRoute(
      name: "categories", 
      url: "categories", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

     routes.MapRoute(
      name: "products", 
      url: "products", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 


     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
+0

これはうまくいきますが、2ルートの代わりに単一のルートを定義できませんか? – refactor

+0

ホームがホームコントローラを指す場合、またはその他のURLがそれぞれのコントローラとアクションを指す場合はどうすればよいですか?カテゴリと製品の両方が製品コントローラを指している必要があります。 – KumarHarsh

+0

私はこれを動的にしたいと思います。私は、各値(この場合は "products"と "categories")の複数のルートを定義するのではなく、同じものをデータベースから取得したいと考えています。同じ方法がありますか? –

関連する問題