我試圖使用HttpContext.Current.Request.RawUrl
來獲取global.asax文件中的頁面請求的URL段。我的代碼如下:如何將URL的控制器段發送到ASP.NET MVC控制器
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new { controller = "Home|Account" }
);
var url = HttpContext.Current.Request.RawUrl;
var pageTitle = url.Split('/')[1];
routes.MapRoute(
"SendToCustomController",
"{*url}",
new { controller = "Custom", action = "Index", title = pageTitle }
);
}
如果我在一個地址如devserver鍵入的第一次:1234 /測試時,得到的字符串「測試」通過發送到控制器。問題是,在隨後的請求中,如devserver:1234/confused具有不同的段,我仍然會將'test'發送到控制器。
這樣做的目的是爲了沒有指定控制器的任何請求,URL的控制器段被傳遞給自定義頁面控制器,該自定義頁面控制器將查看DB中是否有用戶生成的頁面。如果有的話,頁面將被加載,如果沒有標準的404將被拋出。
任何幫助理清上面的問題,或更好的方法來實現這一點將是偉大的!
我簡直不敢相信它是如此直截了當。我花了大約一個半小時在這! Thankyou :) – Chris 2012-02-12 09:25:37
@ChrisPaynter,在ASP.NET MVC中進行路由並不是最簡單的事情,但是一旦你明白了它的工作原理,就不會有任何問題。你有關於這個線程的進一步問題嗎? – 2012-02-12 09:49:10
不,現在我應該沒事,謝謝Darin。 – Chris 2012-02-12 10:32:43