2013-11-04 135 views
0

我有以下的路由配置:路由可選參數

routes.MapRoute(
       name: "Pages", 
       url: "{PageName}", 
       defaults: new { controller = "Pages", action = "GetPageByName" } 
      ); 

我需要在網站結構的變化。我需要將以下網址路由到'pagesController'。在這兩種情況下的參數發送到控制器「頁面名稱」:

http://domain.com/PageName/ 
http://domain.com/something/PageName 

「東西」是沒有必要的,但可以添加並沒有任何影響。

可以這樣做嗎?

回答

0

試試這個:

   routes.MapRoute(
        name: "Pages", 
        url: "{something}/{PageName}", 
        defaults: new { controller = "Pages", action = "GetPageByName" } 
       ); 

       routes.MapRoute(
        name: "Pages", 
        url: "{PageName}", 
        defaults: new { controller = "Pages", action = "GetPageByName" } 
       ); 

你必須按照這個順序來定義和這條路線將映射到GetPageByName操作方法在PagesController

public ActionResult GetPageByName(string pageName) 
{ 

} 
+0

是的,這是正確的解決方案。我只是想出了它。 – Eyal

0

只是設法做到這一點:

routes.MapRoute(
       name: "Pages", 
       url: "{stringURL}", 
       defaults: new { controller = "Pages", action = "GetPageByStringURL" } 
      ); 

      routes.MapRoute(
       name: "Pages2", 
       url: "{x}/{stringURL}", 
       defaults: new { controller = "Pages", action = "GetPageByStringURL" } 
      );