Tuesday, May 3, 2011

path_prefix for asp.net mvc routes

Hi,

I read this article about how you can prefix routes in ruby on rails. I want to be able to do the same thing with asp.net mvc

So I want to be able to define a route like :

/photographers/1/photos/2   //photo 2 of photographer with id 1
/photographers/1/photos     //all of photographer with id 1

Any tips ?

EDIT:

"photographers/{id}/photos/{photoID}" - seems to do the job quite ok, BUT how can I support

RedirectToAction<PhotosController>(x => x.Add());

I would like to redirect to : /photographers/1/photos/add

From stackoverflow
  • You could use regex routing or use wildcards in your routing table so that the {id*} matches the /1/photos/2 for the photographers default controller, parse the string, and redirect to an appropriate action.

    Also take a look at this post about nested resources.

    RouteTable.Routes.Add(
            new Route { Url = "events/[eventId]/tickets/[action]/[id]", 
                        Defaults = new { controller = "Tickets", 
                                         action = "List", id = (string)null }, 
                        RouteHandler = typeof(MvcRouteHandler) });
    
  • Define your route like this:

    routes.MapRoute(
        "Photographers",
        "photographers/{id}/photos/{photoID}",
        new { controller = "Photographers", action = "Photo", photoID = null });
    

    Then define your controller action like this:

    public ActionResult Photo(int id, int? photoID)
    {
        // If photoID is not null, show just that photo.
        // Otherwise, show all photographs.
    }
    

0 comments:

Post a Comment