8 namespace DynamicRoutes
9 {
10 public class DynamicRoutesConfigurationSection : ConfigurationSection
11 {
12 public List<MvcRoute> Routes { get; set; }
13 public string TypeName { get; set; }
14 public void LoadRoutesFromConfig(XmlNode section)
15 {
16 Routes = new List<MvcRoute>();
17 TypeName = section.Attributes["type"].Value;
18 foreach (XmlNode node in section.ChildNodes)
19 {
20 if (node.Name == “route” && node.Attributes["type"].Value == “map”)
21 Routes.Add(new DynamicRouteConfiguration().LoadRouteMappingFromConfig(node));
22 }
23 }
24 }
25
26 public class DynamicRouteConfiguration
27 {
28 internal MvcRoute LoadRouteMappingFromConfig(XmlNode routeNode)
29 {
30 MvcRoute route = new MvcRoute();
31
32 route.routeName = routeNode.Attributes["name"].Value;
33 route.routePattern = routeNode.Attributes["pattern"].Value;
34 route.routeParams = new List<MvcRouteParam>();
35
36 foreach (XmlNode node in routeNode.ChildNodes)
37 {
38 if (node.Name == “param”)
39 route.routeParams.Add(LoadParamFromConfig(node));
40 }
41
42 return route;
43 }
44
45 internal MvcRouteParam LoadParamFromConfig(XmlNode paramNode)
46 {
47 MvcRouteParam param = new MvcRouteParam();
48
49 param.paramKey = paramNode.Attributes["key"].Value;
50 param.paramValue = paramNode.Attributes["defaultValue"].Value;
51
52 return param;
53 }
54 }
55 }
Finally, here’s what’s in my web.config to set up my default route:
11 <configSections>
12 <section name=“dynamicRoutes“ type=“DynamicRoutes.DynamicRoutesConfigurationHandler, DynamicRoutes“/>
13 </configSections>
14
15 <dynamicRoutes>
16 <route type=“ignore“ url=“{resource}.axd/{*pathInfo}“/>
17 <route type=“map“ name=“Default“ pattern=“{controller}/{action}/{id}“>
18 <param key=“controller“ defaultValue=“Home“/>
19 <param key=“action“ defaultValue=“Index“/>
20 </route>
21 </dynamicRoutes>