2017-10-13 6 views
0

私はMVCアプリケーションでルートを設定しようとしています。そこでは、1つのルートがセグメント「Portal」を持ち、別のルートが「Portal」セグメントを全く持たない場合があります。基本的に、私は同じページにユーザーを送信するためにこれらのURLが必要ですが、私はまた、/ホーム/インデックスがデフォルトになりたい:MVCでは、同じ宛先を指すように2つのルート(ハードコーディングされたセグメントと空のセグメントを持つ1つのルート)を設定するにはどうすればよいですか?

/Portal/Home/Index 
/Home/Index 

私は、次のコードを持っている:

routes.MapRoute(
    "PortalDefault", // Route name 
    "Portal/{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional, portal = String.Empty } // Parameter defaults 
); 

これが可能にユーザーが/ Portal/Home/Indexと/ Home/Indexに移動するのが問題ですが、Webサイトのデフォルトは/ Portal/Home/Indexになります。

私は/ホーム/インデックスをデフォルトにウェブサイトを必要とするが、依然として/ポータル/ホーム/インデックス許可

答えて

1

一つの解決策はPortalDefaultを上書きするホームページのルートを追加することです。

routes.MapRoute(
    "Home", // Route name 
    "", // URL with parameters 
    new { controller = "Home", action = "Index", portal = String.Empty } // Parameter defaults 
); 

routes.MapRoute(
    "PortalDefault", // Route name 
    "Portal/{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional, portal = String.Empty } // Parameter defaults 
); 

注:あなたのPortalDefaultルートがportalのルート値を定義していないことを奇妙に思えるが、あなたのDefaultルートはありません。

関連する問題