2009-10-24 6 views
0

MVC에서 내 라우팅을 설정하는 데 문제가 있습니다. 나는 그것이 어떻게 작동 하는지를 이해할 수 있다고 생각하지만, 나는 적절한 길을 설정하는 것처럼 보이지 않는다. StackOverflow에 그렇게 작동하는 방법ASP.NET MVC 라우팅 문제

는 기본적으로 나는 비슷한 싶지 :

http://localhost/faq

나는 이것이 HomeController를 잡고 싶어, 자주 묻는 질문 조치를 쳤고 자주 묻는 질문 뷰를 돌려줍니다. 나는 이것을하는 방법을 알아낼 수 없습니다.

또한,이 같은 뭔가 새로운 경로를 추가하는 시도 :

http://localhost/Boxes/25

그래서, 박스 25 분명히 아이디 (매개 변수)이며, 컨트롤러이다. 유래가 얼마나 유사하게 :)

routes.MapRoute(
     "Boxes", 
     "Boxes/{boxnumber}", 
     new { 
      action="Details", cubenumber = "" 

} ; https://stackoverflow.com/questions/[question 수]/[질문 제목]

그래서 나는이 일을 시도

성공하지 못했습니다.

Route Tester 앱도 다운로드했지만이 시점에서는 도움이되지 않습니다. 대부분의 경우 라우팅 작업 방법을 실제로 읽어야하지만 내 휠을 돌릴 필요없이 누군가가 올바른 방향으로 나를 안내 할 수 있는지 궁금한 점이 많습니다.

고마워요!

답변

2

는 다음과 같은 시도 : 당신이 이해하는 데 도움이 될 수 있습니다

routes.MapRoute(
     null, // optional route name 
     "faq", 
     new { controller="Home", action="Faq" }); 

routes.MapRoute(
     null, // optional route name 
     "Boxes/{boxnumber}", 
     new { controller="Boxes", action="Details", boxnumber = ""}); 

// Original route, if needed, should come AFTER more specialized routes. 
routes.MapRoute(
     "Default",            // Route name 
     "{controller}/{action}/{id}",        // URL with parameters 
     new { controller = "Home", action = "Index", id = "" }); // Parameter defaults 

일부 사항이 개선 :

  • 컨트롤러와 동작 매개 변수를 명시 적으로 들어오는 URL 또는 통해 중,를 지정해야합니다 지정하는 기본값 (들어오는 URL에 누락 된 경우)
  • 경로 추가 순서는 매우 중요합니다. bec 첫 번째 일치 항목이 들어오는 각 URL에 사용됩니다.위의 예에서 원본 경로가 처음 추가되면 다른 경로는 일치하지 않습니다 (원래 경로는 URL의 모든 매개 변수화 된 부분에 대해 기본값을 지정하기 때문에)
  • 경로 이름은 선택 사항입니다. 경로 이름을 사용하여 아웃 바운드 URL 생성
+0

두 번째 경로 (Boxes의 경우)는 Boxes 메소드의 모든 작업을 숨 깁니다. 이러한 경로에 제약 조건이 있는지 확인하십시오. –

+0

제약 조건을 어떻게 추가합니까? –

1

경로를 정의 할 때 최소한 컨트롤러와 동작의 두 가지 정보가 있어야합니다. 이러한 값은 매개 변수 (예 : URL 패턴의 '{매개 변수}'부분) 또는 기본값으로 제공 될 수 있습니다.

위에 붙여 넣은 경로 예에는 작업이 포함되어 있지만 컨트롤러가 없으므로 요청을 만족시킬 수 없습니다. 컨트롤러 이름이 "BoxesController"이기 때문에, 단순히 "controller = 'Boxes'"를 해당 경로의 기본값에 추가하면 좋을 것입니다.

faq 경로를 얻으려면 URL이 "faq"이고 경로 기본값이 controller = "Home", action = "Faq"인 경로를 간단하게 정의 할 수 있습니다.