2

シングル ページ アプリケーション (SPA) をセットアップ中で、現在 2 つのルートをセットアップしたいと考えています。例えば:

  • ルート 1: http://localhost- これは、認証が必要なデフォルト ルートです (管理エリア)。
  • ルート 2: http://localhost/<client>/<clients project name>/- これは認証を必要としません (表示のみ)

管理領域では、 と がセットアップ<client><clients project name>れているため、MVC4 ルートでこの構成をセットアップする必要があることはわかっていますが、これにどのようにアプローチするかは不明です。

もう 1 つの注意点は<clients project name>、URL に が入力されていない場合、そのクライアントの検索ページが表示されることです。

4

1 に答える 1

6

MVC でのルーティングの優れた点の 1 つは、URL がコントローラーやアクション メソッドの名前と一致するかどうかに関係なく、あらゆるものをどこにでもルーティングできることです。RouteConfig を使用すると、これに対応するために特定のルートを登録できます。これを達成する方法をお見せしましょう。

ルート 1:

これは、ルート構成のデフォルト ルートによって処理されます。

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

ヒットhttp://localhostすると、HomeコントローラーとIndexアクション メソッドに移動します。

ルート 2:

http://localhost/<client>対応する 1 つのルートを設定できます。http://localhost/<client>/<clients project name>

routes.MapRoute(
    "Client", 
    "{client}/{title}", 
    new { controller = "Home", 
          action = "Client", 
          title = UrlParameter.Optional });

または のいずれhttp://localhost/baconhttp://localhost/bacon/smokeyを押すと、HomeコントローラーとClientアクション メソッドに移動します。titleはオプションのパラメーターであることに注意してください。これにより、両方の URL を同じルートで機能させることができます。

これをコントローラー側で機能させるには、アクション メソッドClientを次のようにする必要があります。

public ActionResult Client(string client, string title = null)
{
    if(title != null)
    {
       // Do something here.
    }
}
于 2013-04-30T12:57:31.023 に答える