У меня нет опыта работы с маршрутизацией, поэтому, если я не использую это правильно, пожалуйста, дайте мне знать.
У меня создано 3 маршрута: LocationPages, ServicePages и StaticPages.Я разбил их на 3 маршрута, потому что они хранятся в 3 таблицах в БД.Моя проблема заключается в том, что содержимое страницы default.aspx для LocationPages и ServicePages хранится в таблице StaticPages, поскольку не имеет той же структуры, что и текущая страница местоположения или страницы службы.
Моя проблема заключается в том, чтопри переходе на domain.com/locations/ маршрут LocationPages забирает его, когда должен быть маршрут StaticPages, и то же самое для страниц обслуживания.Он подхватывает его, потому что маршрут для страниц местоположения - domain.com/locations/cityname/.
Я попытался использовать Response.RedirectToRoute ("StaticPages") в том случае, если не удается найти страницу местоположения, поэтомустатическая маршрутизация страниц может обработать его и запросить страницу местоположения по умолчанию или отправить на 404. Однако каждый раз, когда параметр маршрута равен нулю.
Вот мой код и маршруты:
void RegisterRoutes(RouteCollection routes)
{
routes.Ignore("{resource}.axd/{*pathInfo}");
routes.MapPageRoute("LocationPages", "Locations/{*RouteLocation}", "~/LocationRouteHandler.aspx");
routes.MapPageRoute("ServicePages", "Services/{*RouteService}", "~/ServiceRouteHandler.aspx");
routes.MapPageRoute("StaticPages", "{*RoutePage}", "~/default.aspx");
}
Обработчик маршрута местоположения:
protected void GetLocationPage()
{
try
{
string RouteLocation = Page.RouteData.Values["RouteLocation"] as string;
if (RouteLocation.EndsWith("/"))
RouteLocation = RouteLocation.TrimEnd('/');
AccessLocation location = new AccessLocation();
lpd = location.GetLocationDetailByRouteLocation(RouteLocation);
if (lpd != null)
{
if (lpd.LocationPage.Active == false)
Response.Redirect("~/Error/404.aspx");
}
else
Response.Redirect("~/Error/404.aspx");
}
catch
{
Response.RedirectToRoute("StaticPages");
Response.End();
}
}
Обработчик маршрута статической страницы:
protected void GetContentPage()
{
try
{
string RoutePage = Page.RouteData.Values["RoutePage"] as string;
if (string.IsNullOrEmpty(RoutePage))
RoutePage = "Home";
if (RoutePage.EndsWith("/"))
RoutePage = RoutePage.TrimEnd('/');
AccessContent content = new AccessContent();
cpd = content.GetContentDetailByRoutePage(RoutePage);
if (cpd != null)
{
if (cpd.ContentPage.Active == false)
Response.Redirect("~/Error/404.aspx");
}
else
Response.Redirect("~/Error/404.aspx");
}
catch
{
Response.Redirect("~/Error/404.aspx");
}
}
КогдаЯ отлаживаю, я вижу, что это входит в метод статической страницы, но переменная RoutePage всегда нулевая.
Спасибо за помощь!