2011-01-27 3 views
1

Я пытаюсь сделать следующее в моей Global.asax файл:ASP.NET 4 маршрутизации вопрос

На данный момент у меня есть, чтобы определить свой маршрут, как это:

routes.MapPageRoute(
    "ViewPage", 
    "pages/{slug}", 
    "~/viewpage.aspx", 
    false 
); 

Уведомления страниц слова до {slug}

Теперь, если я определить это так:

routes.MapPageRoute (
    "ViewPage", 
    "{slug}", 
    "~/viewpage.aspx", 
    false 
); 

это делает п от работы.

Мои CSS и JS файлы обыкновение нагрузки, я получаю 404.

Но, если я это сделать:

routes.MapPageRoute (
    "ContactPage", 
    "contact", 
    "~/contact.aspx", 
    false 
); 

Он отлично работает ??

В основном я хочу, чтобы мои URLs выглядеть следующим образом:

example.com/contact или example.com/about-us и все это подается динамически из базы данных на основе {} слизня.

Может ли кто-нибудь помочь?

ответ

3

Использование:

RouteTable.Routes.MapPageRoute("slug", 
       "{slug}", 
       "~/page.aspx", false); 

отлично работает для меня. Вам нужно убедиться, что ваши маршруты находятся в правильном порядке; специфические для общего, но также и игнорировать один для ресурсов и т. д., иначе они также будут проложены там.

Надежда, что помогает

Редактировать

Игнорировать маршруты, такие как:

RouteTable.Routes.Ignore("{resource}.axd/{*pathInfo}"); 
+0

+1 - Решение похоже на http://www.stevefenton.co.uk/Content/Blog/Date/201101/Blog/The-Nicest-URLs-In-ASP-NET-MVC/ – Fenton

1

How to ignore route in asp.net forms url routing

Может быть что-то вроде этого, хотя я не могу проверить это на данный момент. Насколько я понимаю, он должен сказать обработчику маршрутизации игнорировать что-либо в этих каталогах.

routes.Add(new Route("images/", new StopRoutingHandler())); 
routes.Add(new Route("js/", new StopRoutingHandler())); 
routes.Add(new Route("css/", new StopRoutingHandler())); 
1

Спасибо, ребята !!

Мне пришлось переупорядочить мои маршруты.

Я использую HttpHandler для объединения и gzip файлов js и css. Об этом добавляется последний так:

const string combine = "~/code/httphandlers/httpcombiner.ashx"; 
RegisterRoutes(RouteTable.Routes); 
RouteTable.Routes.Add(new Route("combine", new HttpHandlerRoute(combine))); 

Я включил их вокруг:

const string combine = "~/code/httphandlers/httpcombiner.ashx"; 
RouteTable.Routes.Add(new Route("combine", new HttpHandlerRoute(combine))); 
RegisterRoutes(RouteTable.Routes); 

Я добавил StopRoutingHandler для WebResource.axd и теперь все это работает красиво!