2011-12-06 2 views
1

私はマルチテナントなアプリケーションを持っています。つまり、アプリケーションを使用する複数のクライアントがあり、フォルダを使用して単一のドメインを共有しています。次のように:特定のルート値が自動的に渡されるようにカスタムルートを実装する方法はありますか?

  1. www.mydomain.com/ client1 /ホーム/インデックス
  2. www.mydomain.com/ client2 /ホーム/インデックス

私はクライアントのための領域を使用することはできません静的なものではなく、登録してすぐにアプリケーションの使用を開始できる必要があります。私はサブドメインを使うことができません。なぜなら、私はDNSに対して動的なコントロールを持っていないからです。

つまり、発信URLを作成するたびにクライアント名を渡す必要がないように、カスタムルートを実装するにはどうすればよいですか。ある

、私はこれが本当であるにしたい:何かがあるため、私はこのURLを構築する時間によってclient1を解決することができ、この文字列は、現在のルート値の値になり、

@Url.Action("Index", "Home") -> www.mydomain.com/client1/home/index 

client1を通過することなく、私はすでにその場所にいるからclient1

どうすればいいですか?

答えて

5
routes.MapRoute(
    "Default", 
    "{client}/{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

あなたが使用するときにIndex.cshtmlビュー内/client1/Home/Indexにしている場合移動します。

@Html.ActionLink("foo", "About") 

これが生成されます:内部Url.Actionヘルパーを使用するための真の

<a href="/client1/home/About">foo</a> 

同じスタンドIndexアクション。元の要求からclientのルート値が保持されます。

+0

これはかなりうまくいきます。ありがとうございました! –

関連する問題