2017-11-02 16 views
-1

コントローラの前にユーザのユーザ名を設定するアプリケーションを作成するいくつかのコスチュームルートがあります。そしてまた、私は、ユーザー名の後に、いくつかのコントローラを表示したい:例えばASP MVCコスチュームルート

:ここ

localhost:44303/johndoe //it should show profile > index 
localhost:44303/johndoe/Profile 
localhost:44303/johndoe/Profile/Index 
localhost:44303/johndoe/Profile/Setting 
localhost:44303/johndoe/Activity 
localhost:44303/johndoe/Activity/Index 
localhost:44303/johndoe/Activity/Setting 

は私のルート設定である:その場合は

 routes.MapRoute(
      name: "profile", 
      url: "{name}/profile/{action}", 
      defaults: new { controller = "profile", action = "Index" } 
     ); 

     routes.MapRoute(
      name: "Activity", 
      url: "{name}/Activity/{action}", 
      defaults: new { controller = "Activity", action = "Index" } 
     ); 

    /*********** PROJECT OTHER ROUTE****************/ 

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

     routes.MapRoute(
      name: "Default1", 
      url: "{controller}/{action}/{parametr1}/{parametr2}/{parametr3}", 
      defaults: new { controller = "Home", action = "Index", parametr1 = "1", parametr2 = UrlParameter.Optional, parametr3 = UrlParameter.Optional } 
     ); 

すべてのURLの仕事はきちんとこの除い: はlocalhost :44303/johndoe

The resource cannot be found.エラーが発生します。

私はルートの下に追加さが、新しい問題がlocalhost:44303のような他のルートに登場しました:

 routes.MapRoute(
      name: "username", 
      url: "{name}", 
      defaults: new { controller = "Profile", action = "Index", } 
     ); 

どのように私はこの問題を解決することができますか?私の主な問題は、いくつかのURLのようですlocalhost:44303/johndoe

+0

'username'ルートと一致するURLはすべて' Default'ルートと一致します。あなたが 'Default'ルートの後に' username'ルート*を置くとき、それはより低い優先順位を持っているので、決してマッチしません。 – Dai

+0

私はこれを行うが、私はまだ同じ問題がある – user3748973

答えて

0

それは落ちて、デフォルトルートを打つ必要があります。プロファイル/インデックスに移動したい場合は、デフォルトの方法を設定してください。