2010-10-22 75 views
0

在asp.net MVC 2中有一種方法,我可以路由請求,並忽略一部分URL並將其作爲變量傳遞給控制器​​?如何在路由忽略時將URL傳遞給控制器​​?

我的需要說明,我必須動態地將數據庫中的頁面存儲在數據庫中,並且應該通過查看URL並閱讀URL段以查找相關頁面來訪問它們。實際上,我需要一個網站控制器,網址的其餘部分將通過該控制器。

Site-Controller/this/is/a/page 

所以這情況下,現場控制器便拿起/這/是/一個/頁「串」

這可能嗎?

謝謝!

回答

2

創建一個通配符路由在Global.asax中其中的第一段之後捕捉一切並將它傳遞給您的Action方法:

routes.MapRoute("Page", 
       "Site-Controller/{*urlsegments}", 
       new { 
        controller = "Site-Controller", 
        action = "YourAction", 
        urlsegments = "" 
       }); 

確保您的Action方法接受'urlsegm ents的參數,你可以從那裏使用它:

public ActionResult YourAction(string urlsegments) 
{ 
    // Do something with the segments here 
} 
+0

兩個幾乎相同的答案,在同一時間進來。我覺得不好,我不能給你正確的答案的信貸! – Sergio 2010-10-22 18:22:05

+0

哈哈......好吧,我投了克雷格的答案,希望能夠平衡一下!很高興幫助。 – 2010-10-23 09:04:46

3

是,使用通配符路線,如:

 routes.MapRoute(
      "SiteController",          // Route name 
      "Site-Controller/{*url}",        // URL with parameters 
      new { controller = "SiteController", action = "Index" }, // Parameter defaults 
      null              // constraints 
     ); 

然後你的行動看起來像:

public ActionResult Index(string url) 
{ 
} 
相關問題