2015-10-20 52 views
4

最近,我不得不更新我的mvc web應用程序,以便系統的基本實體以不同的文字顯示在UI中。c#MVC 5 RouteConfig重定向

比方說

以前我: 「船舶」

現在有人問我做的那樣: 「船舶」

其中如按照慣例映射的URL:mysite/{controller}/{action}/{id}

所以我有這樣的網址:

mysite/Vessels/Record/1023 

mysite/Vessels/CreateVessel 

我做了全部在用戶界面中進行重命名,以便將標題和標籤從船舶更改爲船舶,現在我也要求照顧這些網址。

現在,我不想重命名Controller名稱或ActionResult方法名稱,因爲它是一些重構重構,並且很可能文字很快會被要求再次更改...... ;-)

對於我來說,通過編輯RouteConfig或類似的東西,是否有任何快速解決方案,可以用幾行代碼來完成工作?

回答

1

呀,剛剛註冊將映射您VesselsController的行動路線:

public class MvcApplication : System.Web.HttpApplication 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

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

     } 

     protected void Application_Start() 
     { 
      RegisterRoutes(RouteTable.Routes); 
     } 
    } 

還要確保默認一個先登記您的路線。因爲在其他情況下,默認路由將首先執行,並且您將得到一個異常,因爲在您的應用程序中沒有定義ShipController

+0

謝謝Dmytro,但是,Action名稱怎麼樣?我可以用一些類似的方式重定向到它,還是一個正則表達式,我可以將「vessel」替換爲「ship」? – cnom

+1

@cnom,不需要正則表達式,請參閱我的更新。但是,在這種情況下,您必須將您的控制器操作從CreateVessel重命名爲Create。此外,恕我直言,你不需要船舶成爲行動名稱的一部分。由於Create是VesselController的一部分,因此很顯然您正在創建容器。 – Dmytro

+0

我最好只用動詞「創建」,「刪除」等動作名稱是正確的,但事情是,我沒有,即使我這樣做,那麼我將不得不重命名相應的視圖名稱..這就是我想要避免的一切...... – cnom