2012-02-25 11 views
0

私はASP.NET MVCチュートリアルで自分のやり方で働いていますが、私が探している答えは見つかりませんでした。MVC3の階層

私はそう、「コントローラ」ルートフォルダ内の各コントローラクラスは、URLにマッピングされていることを理解する:

****Controller Folder**** 
    |- StoreController.cs 

地図$url/Store

しかし、私は「サブフォルダ」をクリエーターをご希望の場合

eコントローラクラスは$url/Store/Testingのために私はそれについて行く方法を参照してくださいすることはできません。 私はStoreController.csからクラスを派生させようとしましたが、それはうまくいきませんでした。

答えて

1

URLは、必ずしもMVCアプリケーションの内部フォルダ構造に対応しているとは限りません。 MVCルーティングテーブルを使用して内部構造を隠し、特定のURLを任意のコントローラ/アクションにリダイレクトすることができます。たとえば、あなたがControllersフォルダにTestingController.csクラスを作成することができますし、Global.asaxでこのルートを使用します。

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

     routes.MapRoute(
      "Store-Testing", // Route name 
      "Store/Testing/{action}/{id}", // URL with parameters 
      new { controller = "Testing", 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 } // Parameter defaults 
     ); 

    } 

この場合、http://[domain]/Store/Testingへの要求がTestingControllerによって処理されます。

0

デフォルトのルートでは、URLはStoreコントローラ内のTestingというアクションを指します。

ただし、独自のカスタムルートをglobal.asaxファイルに作成することはできます。