开发者

ASP.NET MVC: Controlling naming conventions of controllers / views?

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
        );


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.


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.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜