2009-12-02 156 views
2

任何人都可以告訴我如何手動編輯我的路線命名約定。讓我解釋一下。我的英語按照微軟的標準(編程的一切,但我需要ASP.NET MVC:控制控制器/視圖的命名約定?

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

其實我有以下

ReservationController,然後在下面的意見,我有一個名爲預約與一個名爲Index.aspx的文件夾,我的看法)。

所以基本上我很高興的命名慣例,我有,但當前需要瀏覽到

www.mydomain.com/Reservation 

,而不是

www.mydomain.com/Reserva 

讓我的頁面上來

我安裝了默認的MapRoute,我該如何啓用上述功能?有任何想法嗎?

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

感謝大家的意見,我將與創建每條路線分開去,因爲我沒有那麼多,我知道它不可擴展......但它修復了我目前..謝謝 – 2009-12-03 14:32:28

回答

5

你可以只建立在同一文件中的新路徑,像這樣:

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

,並把它放在你的文件的默認路徑之上。

+0

你打算怎麼去處理這些行爲? – tvanfosson 2009-12-02 16:45:17

+0

如果你想要做同樣的事情,操作可能會變得棘手......你可以用一堆亂七八糟的路線來處理每一個動作 - 如果太多的路由是一個問題(這是有道理的 - 你不會想要一條路線來對應每一個行動 - 謝謝),那麼你可能需要看看人們提供的更強大的解決方案之一,用比我更多的代表人物......;) – onekidney 2009-12-02 17:03:14

2

在這種情況下,我可能會改變控制器/動作的名稱,以母語(假設你不需要支持多國語言),並讓我的變量等英文。否則,我認爲你堅持讓每個控制器/動作對有一個路線,以便將每個動作從西班牙語映射到它的英語等值。那時你可能想要create your own route handler

2

OneKidney的答案是你最簡單的解決辦法,但我只是想指出,這並不輕鬆擴展。如果您需要爲大量控制器執行此操作,您的路線可能會開始失控。

所以,你可以做的另一件事是實現一個新的ControllerFactory。 ASP.Net MVC使用的默認ControllerFactory類是將文本「Reservation」映射到控制器類ReservationController。你可以找到很多關於如何實現和使用你自己的邏輯來實例化正確的控制器的教程。 Here's the first one I came across.