Я храню данные своей страницы в таблице меню как
MenuName, MenuID, ParentID, PageURL, PageHandler
Home, 1, 0, /,Default.aspx
About Us, 2, 0, /about-us/, About.aspx
Contact, 3, 0, /contact/, contact.aspx
Mission, 4, 2, /about-us/mission/, About.aspx
Vision, 5, 2, /about-us/vision/, About.aspx
Если я кодирую свой маршрут как статический в файле Global.asax, он работает нормально, как показано ниже.
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("en_Home", "default/", "~/default.aspx", false,
new RouteValueDictionary {
{ "path", "page-not-found" },{ "pagename", "page-not-found" }
});
routes.MapPageRoute("en_aboutUs", "about-us/", "~/about_us.aspx", false,
new RouteValueDictionary {
{ "path", "page-not-found" },{ "pagename", "page-not-found" }
});
}
Я хочу, чтобы мои маршруты были динамическими, чтобы я мог прочитать URL-адрес и значение PageHandler из базы данных и передать его в Route в файле Global.asax как
public static void RegisterRoutes(RouteCollection routes)
{
string sURL = HttpContext.Current.Request.Url.AbsolutePath;
//Above Statement give error Say "HttpContext.Current Cant be used in this context
string PageHandler = DataProvider.GetPageHandlerByPageURL(sURL);
routes.MapPageRoute("en_General_Page", sURL, PageHandler, false,
new RouteValueDictionary {
{ "path", "page-not-found" },{ "pagename", "page-not-found" }
});
}
Я не получаю никакого успеха в этом, так как мне нужно передать значение HttpContext.Current.Request.Url.AbsolutePath
другой функции, чтобы я мог получить обработчик страницы. Вылетает с ошибкой Cant use HttpCotext in this context
HttpContext.Current.Request.Url.AbsolutePath
не работает в функции Route RegisterRoutes
, я должен определить то же самое в Application_BeginRequest
, но тогда у него есть своя проблема.
Как я могу добиться динамической маршрутизации в моем случае. Я использую ASP.Net Webform 4.5
Я был бы признателен за помощь в этом отношении.