Asp.net mvc 我可以在web.config中存储ASP.NET MVC路由吗?
除了Global.asax类之外,我正在寻找一种在web.config文件中存储路由信息的方法。存储在配置文件中的路由需要比以编程方式添加的路由具有更高的优先级Asp.net mvc 我可以在web.config中存储ASP.NET MVC路由吗?,asp.net-mvc,routing,web-config,Asp.net Mvc,Routing,Web Config,除了Global.asax类之外,我正在寻找一种在web.config文件中存储路由信息的方法。存储在配置文件中的路由需要比以编程方式添加的路由具有更高的优先级 我已经完成了搜索,但我能找到的最接近的是Codeplex()上的RouteBuilder,但这不适用于MVC的RTM版本。是否存在与final 1.0兼容的解决方案?我不能保证以下代码会正常工作,但它会生成:)将RouteBuilder.cs中的Init方法更改为以下内容: public void Init(HttpApplic
我已经完成了搜索,但我能找到的最接近的是Codeplex()上的RouteBuilder,但这不适用于MVC的RTM版本。是否存在与final 1.0兼容的解决方案?我不能保证以下代码会正常工作,但它会生成:)将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类。这是必要的,因为CTP中的默认系统比RTM中的复杂得多
编辑:Oh并使用System.Web.Routing添加将code>添加到顶部,并确保添加System.Web.Mvc
和System.Web.Routing
作为参考。查看以下内容: