views:

121

answers:

3

Hi there,

Can anyone tell me how i can manually edit my naming convention of my routes.. Let me explain. I am programming everything in english as per microsoft standards but i require

  www.mydomain.com/Reserva  (Spanish for reservation)

I actually have the following

ReservationController and then below views i have a folder called Reservation with a file called index.aspx (my view).

So basically i am happy with the naming convention i have but currently it necessary to browse to

  www.mydomain.com/Reservation

and not

  www.mydomain.com/Reserva

to get my page to come up

I have the default MapRoute installed, what do i do to enable the above? any ideas?

   routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );
+5  A: 

You could just create a new route in that same file like so:

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

and put it in your file above the default route.

onekidney
How are you going to handle the actions?
tvanfosson
Actions could get tricky if you're trying to do the same thing...you could wind up with a whole mess of routes to handle each action - if too many routes are a concern (which makes sense - you wouldn't want a route to correspond to each and every action - sheesh) then you'd probably need to look into one of the more robust solutions offered by the people with WAY more rep than I have... ;)
onekidney
+2  A: 

In this case I would probably change the names of the controllers/actions to the native language (assuming you don't need support for multiple languages) and keep my variables, etc. in English. Otherwise, I think you're stuck with having a route per controller/action pair to map each action from Spanish to it's English equivalent. At that point you may want to create your own route handler.

tvanfosson
+2  A: 

OneKidney's answer is the simplest solution for you, but I just wanted to point out that it doesn't easily scale. If you needed to do this for lots of controllers, your routes could start getting out of control.

So another thing you can do is implement a new ControllerFactory. The default ControllerFactory class that ASP.Net MVC uses is what maps the text "Reservation" to the controller class, ReservationController. You can find lots of tutorials on how to implement and use your own logic for instantiating the correct controllers though. Here's the first one I came across.

womp