views:

99

answers:

3

I'm new to MVC. I'm having trouble trying to accomplish having a route setup in the following manner:

System/{systemName}/{action}

Where systemName is dynamic and does not have a "static" method that it calls. i.e.

http://sitename.com/Systems/LivingRoom/View

I want the above URL to call a method such as,

public void RouteSystem(string systemName, string action) { // perform redirection here. }

Anyone know how to accomplish this?

Thanks! George

+2  A: 
routes.MapRoute(
    "Systems_Default",
    "System/{systemName}/{action}",
    new { controller="System", action = "RouteSystem", systemName="" }
);

Should route your request as you specified.

Note that with the above route, your Url should be:

http://sitename.com/System/LivingRoom/View
Robert Harvey
A: 

I had a similar problem. I used the following route.

       routes.MapRoute(
            "BlogSpecific",                                              // Route name
            "{blogSubFolder}/{controller}/{action}/{id}",                           // URL with parameters
            new { blogSubFolder = "", controller = "", action = "", id = "" }  // Parameter defaults
        );

blogSubFolder just gets passed to my controller actions as a parameter. Controller and action all work just as they usually do. Just swap out blogSubfolder with your "System" paramter and that will hopefully work for you.

Arthur C
A: 

It looks like you intend to route to a controller based on the system name. If that is correct then you would simply need this:

routes.MapRoute("Systems",
                "Systems/{controller}/{action}"
                new{controller = "YourDEFAULTController", action = "YourDEFAULTAction"});

Please note that the third line only sets the default values specified if they are NOT included in the url.

Given the route above, MVC would route this:

http://sitename.com/Systems/LivingRoom/View

to the View action method on the LivingRoom controller. However this:

http://sitename.com/Systems/LivingRoom

would route to the YourDEFAULTAction method on the LivingRoom controller.

Jeff French