Reputation: 9277
I have an application that deserializes this xml:
<SpecialRoutesList>
<SpecialRoutes>
<SpecialRoute>
<Name>TestRoute1</Name>
<Pattern>TestRouteUrl1</Pattern>
<Defaults>
<Controller>Home</Controller>
<Action>TestRoute1</Action>
<Params>
<Key>id</Key>
<Value>1</Value>
</Params>
</Defaults>
</SpecialRoute>
<SpecialRoute>
<Name>TestRoute2</Name>
<Pattern>TestRouteUrl2</Pattern>
<Defaults>
<Controller>Home</Controller>
<Action>TestRoute2</Action>
<Params>
<Key>id</Key>
<Value>1</Value>
</Params>
</Defaults>
</SpecialRoute>
</SpecialRoutes>
</SpecialRoutesList>
I'm interested to use this deserialized information to map each route:
foreach(SpecialRoute route in SpecialRoutesList.SpecialRoutes) {
routes.MapRoute(route.Name, route.Pattern, new { ?????????? }, ????????);
}
To set the defaults of a route it's needed to use anonymous types, so how can I use these anonymous types, taking the keys and values from my deserialized class at runtime?
Thanks
Regards
Jose
Upvotes: 1
Views: 214
Reputation: 6741
routes.MapRoute()
builds RouteValueDictionary from defaults. So you may deserialize/build Dictionary<string,object>
from your xml and pass it to routes.MapRoute()
. Same with constraints paramenter.
Update: defaults built as dictionary
var defaults = new Dictionary<string, object> {{"controller", "Account"}, {"action", "Login"}};
routes.MapRoute(
"Default", // Route name
"{controller}/{action}", // URL with parameters
defaults
);
Upvotes: 1