2017-01-25 76 views
0

我的web應用程序出現了一個小問題。我爲我的應用程序使用C#MVC,並且爲我的URL創建了自定義格式,因爲我的應用程序將根據我在URL中收到的代碼連接到不同的數據庫。c#MVC自動更改URL格式

問題是,當我第一次吃午飯我的應用程序,網址改變了。 這裏有一個例子:

我自定義的格式是這樣的:

{代碼}/{文化}/{控制器}/{行動}/{ID}

我有這個從一開始網址:

http://localhost:47730/efs/fr-ca

這裏EFS意味着{代碼}FR-CA{文化}

,但一路走來,它成爲這個

http://localhost:47730/Home/Index

我想它是這樣的:

http://localhost:47730/efs/fr-ca/Home/Index

這裏是我的routeConfig:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{code}/{culture}/{controller}/{action}/{id}", 
      //defaults: new { code = string.Empty,culture = string.Empty, controller = "Home", action = "RV", id = UrlParameter.Optional } 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 


     routes.MapRoute("Error", "{*url}", new { controller = "Error", action = "Error" }); 
    } 
} 

如果你需要更多信息,只是問我:)

謝謝您的時間!

回答

1

試試這個

public class RouteConfig 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "Default", 
       url: "{code}/{culture}/{controller}/{action}/{id}", 
         defaults: new {code ="efs",culture="fr-ca", controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 


      routes.MapRoute("Error", "{*url}", new { controller = "Error", action = "Error" }); 
     } 
    } 
+0

的事情是,代碼「EFS」可以是任何東西,所以我不希望把一個缺省值有 – alexandre

+1

然後,不包括默認值。但是,如果沒有默認值,那麼您必須*總是*提供URL的部分。換句話說,將無法加載文檔根目錄('/')。然而,@ Shan的答案的主要觀點是,您需要更改默認路由以包含這些路由參數。如果你有一條不需要它們的路由,那麼MVC將總是使路由短路,並按照不需要它們的路由進行。 –