2011-09-28 5 views
5

私は新しいasp.net mvc 3プロジェクトを持っています。私はどんな方法でも経路を変更しなかった。私はPageControllerというコントローラを持っていて、別のコントローラはContentControllerというコントローラを持っています。なぜASP.NET MVC 3では、 "ContentController"というコントローラのデフォルトルートが機能していないのですか?

domain.com/Pageを参照すると、PageコントローラのIndexアクションが期待通りに実行され、インデックスビューが表示されます。

domain.com/Contentを参照すると404エラーが表示されます。私がdomain.com/Content/Indexを参照すると、正常に動作します。

この単一ルートのトラブルシューティングを行うにはどうすればよいですか?

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

私は、追加のルートを追加してみました:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

    } 

をしかし、追加のルートは、アプリケーションの動作を変更しませんでした。

この原因は何ですか?

+0

だけ明確にするためには、あなたは 'ContentController' –

+0

@MatthewAbbottためのコードを追加することができます - それは、すべての足場によって生成されます。私はNathanの答えを実装することで問題を解決することができました。 – quakkels

答えて

11

コンテンツと呼ばれる物理的なフォルダがあるためです。物理フォルダと同じ名前のコントローラを使用すると、おそらくあなたのウェブサイトに悪影響が及ぶでしょう。あなたのルートの定義に次の追加

+0

ああ...これは理にかなっている。私はコントローラの名前を変更しようとします。 – quakkels

+0

ありがとう...とても単純です。 – quakkels

+0

ちょうど私の頭をabitのために壁に叩いた後、これに遭遇した、答えのおかげで! – Wil

0

試してみてください。

routes.RouteExistingFiles = true; 
+0

実際のコンテンツファイルのルートを設定したり、ルートを無視したりする必要はありませんか? –

+0

これはうまくいくはずです。しかし、根本的な問題は@ nathangonzalezによって概説されていると思います。 – quakkels

関連する問題