2011-01-27 2 views
1

나는 내 Global.asax 파일에서 다음을 수행하려고 :ASP.NET 4 라우팅 질문

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

공지 단어 페이지 :이처럼 내 경로를 정의 할 필요가 순간

을 이제 {slug}

내가 이런 식으로 정의하면 전에 :

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

은 N을한다 오케이. 내가이 할 경우

내 CSS와 JS 파일, 나는 404

얻을 부하를 실 거예요하지만 :

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

그것은 잘 작동을 ??

example.com/contact 또는 example.com/about-us하고 모두가 {슬러그}에 따라 데이터베이스에서 동적으로 제공됩니다 :

는 기본적으로 난 내 URL이 같이하고자합니다.

아무도 도와 줄 수 있습니까?

답변

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를 사용하여 js와 css 파일을 결합하고 gzip으로 묶습니다. 이것은과 같이 마지막에 추가되고 있었다 :

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); 

내가 WebResource.axd와의 StopRoutingHandler을 추가하고 지금 모든 아름다운 작품!