在asp.net MVC 2中有一種方法,我可以路由請求,並忽略一部分URL並將其作爲變量傳遞給控制器?如何在路由忽略時將URL傳遞給控制器?
我的需要說明,我必須動態地將數據庫中的頁面存儲在數據庫中,並且應該通過查看URL並閱讀URL段以查找相關頁面來訪問它們。實際上,我需要一個網站控制器,網址的其餘部分將通過該控制器。
Site-Controller/this/is/a/page
所以這情況下,現場控制器便拿起/這/是/一個/頁「串」
這可能嗎?
謝謝!
在asp.net MVC 2中有一種方法,我可以路由請求,並忽略一部分URL並將其作爲變量傳遞給控制器?如何在路由忽略時將URL傳遞給控制器?
我的需要說明,我必須動態地將數據庫中的頁面存儲在數據庫中,並且應該通過查看URL並閱讀URL段以查找相關頁面來訪問它們。實際上,我需要一個網站控制器,網址的其餘部分將通過該控制器。
Site-Controller/this/is/a/page
所以這情況下,現場控制器便拿起/這/是/一個/頁「串」
這可能嗎?
謝謝!
創建一個通配符路由在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
}
是,使用通配符路線,如:
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)
{
}
兩個幾乎相同的答案,在同一時間進來。我覺得不好,我不能給你正確的答案的信貸! – Sergio 2010-10-22 18:22:05
哈哈......好吧,我投了克雷格的答案,希望能夠平衡一下!很高興幫助。 – 2010-10-23 09:04:46