我正在尋找除了Global.asax類以外,還在我的web.config文件中存儲路由信息的方法。存儲在配置文件中的路由需要比以編程方式添加的路由優先。我可以在web.config中存儲ASP.NET MVC路由嗎?
我已經完成了我的搜索,但最接近我可以想到的是Codeplex上的RouteBuilder(http://www.codeplex.com/RouteBuilder),但這不適用於RTM版本的MVC。那裏的解決方案是否與最終的1.0兼容?
我正在尋找除了Global.asax類以外,還在我的web.config文件中存儲路由信息的方法。存儲在配置文件中的路由需要比以編程方式添加的路由優先。我可以在web.config中存儲ASP.NET MVC路由嗎?
我已經完成了我的搜索,但最接近我可以想到的是Codeplex上的RouteBuilder(http://www.codeplex.com/RouteBuilder),但這不適用於RTM版本的MVC。那裏的解決方案是否與最終的1.0兼容?
我不能保證下面的代碼的工作,但它建立在:)更改RouteBuilder.cs初始化方法如下:
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類。這是需要的,因爲默認系統在CTP中比在RTM中複雜得多。
編輯:哦,並將using System.Web.Routing;
添加到頂部,並確保您添加System.Web.Mvc
和System.Web.Routing
作爲參考。