2017-01-29 8 views
0

私は複数の組織のためのウェブサイトを構築しています。たとえば、mydomain.com/org1/home/indexまたはmydomain.com/org2/home/indexにアクセスできます。私がやろうとしています何パラメータとしてエリアを持つasp.net mvcルーティング

は次のルーティング、

mydomain.com/{area}/{controller}/{action}/{id}

を持っている私はどのように把握することはできませんこれを行うには、率直にも自分のルーティングを設定する方法を開始することもありません。表示する画像、テキストなどを決定するために{area}文字列にアクセスできるようにしたい。

私は何をしようとしているのかと思っていればいいと思う。

答えて

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

あなたのホームコントローラは、次のようなものになります。

public ActionResult Index(string area, string id) 
+0

迅速な対応のおかげでたくさん!それは間違いなくその問題を解決します。それでは必ずしもそうではない、つまり{area}パラメータがあるので、私は別のものに直面しています。今、私が/ Account/Loginに行くと、エラーが発生します。私の前に/ foo/Account/Loginのような文字列を追加すると、ログインページが表示されます。 これは別の問題だと私は認識しています。私がしたのは、あなたが私に与えたルートを最初の「customRoute」として使用し、その後デフォルトルートが宣言されていることです。 これを解決する方法をご存知ですか?それとも別の質問を投稿するべきでしょうか? "アカウント"、 URL: "{コントローラ}/{アクション}/{ID}" デフォルト:新しい{ コントローラ= "アカウント"、 アクション= "ログイン" – joks

+0

あなたは 'routes.MapRoute( 名を追加することができます、 id = UrlParameter.Optional ); "Default"ルートの直前 – JohanP

+0

"Default"と "Account"の2つのルートがあります。 HomeControllerがIndex(文字列領域)を持っていても、 "Account"ルートが一番上にあればmydomain.com/foo/home/indexにアクセスできません。単にエラーが出ます。私が "デフォルト"を上に置くと、mydomain.com/foo/home/indexにアクセスできます。素晴らしいですが、私が望んでいない他のコントローラ/アクションにアクセスすることもできます。たとえば、ActionResult Index()を持つDivisionsControllerがあります。今ではmydomain.com/foo/divisions/indexを呼び出すことができ、mydomain.com/divisions/indexと書いたのと同じページを返します。私はそれを望んでいません... – joks

関連する問題