2009-07-11 6 views
1

http://mysite.com/Foo을 처리 할 라우팅을 어떻게 설정합니까?ASP.NET MVC에서 빈 URL을 처리하는 방법

여기서 foo는 임의의 값일 수 있습니다. 나는 그것이/home/Action/Id로 가고 싶습니다. foo는 id입니다.

내가 시도 매핑은 다음과 같습니다

 routes.MapRoute("Catchall", "{*catchall}", 
      new { controller = "Home", action = "Index", id=""}); 

     routes.MapRoute("ByKey", "{id}", 
      new { controller = "Home", action = "Index" id=""}); 

그들은 모두 어떤 도움을위한 404

감사를 생성합니다.

답변

1

두 번째 경로가 정확합니다. 그것은 작동해야합니다. 위의 다른 경로가 있습니까? Phil Haack's ASP.NET Routing Debugger

+0

저는 단위 테스트가 더 좋은 방법이라고 믿습니다. MvcContrib 라우팅 테스트 도우미를 사용해 보셨습니까? :) –

+0

ShouldMapTo (x => x.Index ("foo"));'와 같은 것이''~/foo ".Route()와 유사합니다. 대답을 게시해야합니다 –

+0

하지만이 테스트에 실패하면 David이 어떻게 도움이되는지 이해하지 못합니까? –

3

로 경로를 디버깅하는 것은이 (당신이 원래 게시물에 누락 된 쉼표 있었다 주)보십시오, 그것은 조금 더 설명 나중에 충돌을 방지 할 수 있도록하지만,

routes.MapRoute("ByKey", "{id}", 
    new { controller = "Home", action = "Index", id=""}); 

나는 것을 심지어 경우 조금 더 긴 URI를 의미합니다.

routes.MapRoute("ByKey", "ByKey/{id}", 
    new { controller = "Home", action = "Index", id=""}); 

첫 번째 MapRoute 명령으로 배치하십시오. 주문은 거기서 문제가되며 추가하는 첫 번째 경로는 테스트 할 URL의 첫 번째 경로입니다.

관련 문제