2009-04-21 15 views
2

Global.asaxクラスに加えて、web.configファイルにルーティング情報を格納する方法を探しています。構成ファイルに格納されているルートは、プログラムによって追加されたルートよりも優先される必要があります。ASP.NET MVCルートをweb.configに保存できますか?

私は検索しましたが、CodeplexのRouteBuilder(http://www.codeplex.com/RouteBuilder)がこれに該当しますが、これはRTMバージョンのMVCでは機能しません。最終的な1.0と互換性のあるソリューションがありますか?

答えて

1

私は次のコードが動作する保証することはできませんが、それは:)以下にRouteBuilder.csでInitメソッドを変更して構築します。

また
public void Init(HttpApplication application) 
    {     
     // Grab the Routes from Web.config 
     RouteConfiguration routeConfig = 
      (RouteConfiguration)System.Configuration.ConfigurationManager.GetSection("RouteTable"); 

     // Add each Route to RouteTable 
     foreach (RouteElement routeElement in routeConfig.Routes) 
     { 
      RouteValueDictionary defaults = new RouteValueDictionary(); 

      string[] defaultsArray = routeElement.Defaults.Trim().Split(','); 

      if (defaultsArray.Length > 0) 
      { 
       foreach (string defaultEntry in defaultsArray) 
       { 
        string[] defaultsEntryArray = defaultEntry.Trim().Split('='); 

        if ((defaultsEntryArray.Length % 2) != 0) 
        { 
         throw new ArgumentException("RouteBuilder: All Keys in Defaults must have values!"); 
        } 
        else 
        { 
         defaults.Add(defaultsEntryArray[0], defaultsEntryArray[1]); 
        } 
       } 
      } 
      else 
      { 
       throw new ArgumentException("RouteBuilder: Defaults value is empty or malformed."); 
      } 

      Route currentRoute = new Route(routeElement.Url, defaults, new MvcRouteHandler()); 
      RouteTable.Routes.Add(currentRoute); 
     } 
    } 

、DefaultsTypeクラスを削除して自由に感じます。これは、デフォルトシステムがRTMよりもはるかにCTPで複雑になっていたために必要でした。

編集:ああ、using System.Web.Routing;を先頭に追加し、System.Web.MvcSystem.Web.Routingを参照として追加してください。

関連する問題