2011-08-03 29 views
1

ウェブサイトのさまざまな部分で経路を定義することは可能ですか?複数の場所で経路を定義する方法は?

例:ウェブサイトの機能をモジュールに分けて、各モジュールが必要とするルートを定義したいとします。

これは可能ですか?どうやって?

答えて

4

の組み込みのASP.NET MVCを使用することを検討してください。

「エリア」は本質的にあなたのモジュールであり、エリアでは特定のエリアごとにルートを登録できます。

MSDNのウォークスルーがここにあります前に、あなたがそれらを使用していないしている場合:

http://msdn.microsoft.com/en-us/library/ee671793.aspx

基本的に、すべてのあなたの地域固有のコントローラとビューを含む各地域のためのディレクトリを持っており、あなたが他の主要ルートと一緒に、これらすべての余分な領域を登録する必要がありglobal.asax.csで

public class MyAreaRegistration : AreaRegistration 
{ 
    public override string AreaName 
    { 
     get { return "My Area"; } 
    } 

    public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "news-articles", 
      "my-area/articles/after/{date}", 
      new {controller = "MyAreaArticles", action = "After"} 
      ); 

     // And so on ... 
    } 
} 

:そのディレクトリのルートで、あなたはそうのような、特定のエリアのルートを登録したファイルを配置します。

public static void RegisterRoutes(RouteCollection routes) 
{ 
    AreaRegistration.RegisterAllAreas(); 

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Products", 
     "products/show/{name}", 
      new {controller = "Products", action = "Show", name = UrlParameter.Optional} 
     ); 

    ... 
}  
+0

+1 - エリアについてここに投稿するのに適したリンクを見つけるには5分かかりましたが、あなたはそれを私に打ちのめしました...ただ追加情報:http://stackoverflow.com/questions/5243158/how -to-configure-areas-in-asp-net-mvc3 – AJC

+0

@AJCありがとうございました。私は今あなたの雷を盗んで、罪悪感を感じる!しかし、はい、私はあなたが意味することを知っています。私が見る限り、エリアのための "公式"リンクはありません。 – Scott

2

各モジュールにDefineRoutes(RouteCollection routes)メソッドを配置し、Global.asax.csですべて呼び出すことができます。

+0

動的にする場合は、反射を使用してフォルダをスキャンできますか? – codecompleting

+0

'typeof(MyType).Assembly.GetTypes()'をループして、 'IModuleInitializer'インタフェースなどを実装するすべての型を見つけることができます。 – SLaks

関連する問題