2012-08-01 7 views
2

ASP.NET MVC 3을 배우려고했지만 모든 것이 잘 작동하지 않는 것처럼 보입니다.ASP.NET MVC 기본 라우팅 (매개 변수 포함)

public ViewResult List(string user, int page = 1) 
{ 
    //snip 
} 

내 경로는 다음과 같습니다 :

routes.MapRoute(
    null, 
    "Page{page}", 
    new { Controller = "Contract", action = "List" } 
); 

routes.MapRoute(
    null, 
    "Page{page}", 
    new { Controller = "Contract", action = "List", user = "", page = 1 } 
); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

의미

@Html.ActionLink("Contracts", "List", "Contract", 
       new { User.Identity.Name, page=1 }) 

가 ContractController에서이 방법을 액세스 할 수 :

내가 메인 페이지에 ActionLink이 링크는 'Home'컨트롤러에서 'List'동작을 찾을 수 없으므로 404 오류를 반환합니다. 분명히 그것은 첫 번째 경로 중 하나를 사용하지 않았다는 것을 의미합니다.

ActionLink에 매개 변수를 추가하기 전에 모든 것이 효과적이었습니다. 그래서 기본적으로 내가 뭘 잘못하고 있습니까?

대단히 감사합니다. (

@Html.ActionLink("Contracts", "List", "Contract", 
      new { User.Identity.Name, page = 1 }, null) 

최종 PARAM로 null 추가 : 당신은 절대적으로 올바르게 그러나 actionlink을 다른 모든 비트를하고있는

+0

참고 : 수신 요청에서 첫 번째 및 두 번째 경로를 구분할 수 없기 때문에 문제가 계속 발생합니다. 두 번째 요청에 의해 처리되어야하는 모든 요청 (및 출력 링크도)은 첫 번째 요청에 의해 수행됩니다. –

+0

모든 것이 현재 올바르게 작동하는 것 같습니다. 나는 길 중 하나가 불필요하다는 것을 놀랍지는 않다. 나는 아직도 내 머리를 라우팅 주위에두고있다. 처음 두 경로가 서로 바뀌면 차이가 있습니까? – XN16

답변

1

알렉스,

이 누락 된 매개 변수가, 당신의 actionlink이 시도 htmlAttributes)가이 시나리오에서 누락되었습니다 (Html.ActionLink에 대해 9 가지 오버로드가 있으므로 올바른 구현을 놓치기 쉽습니다).

+0

대단히 고마워, 그게 정확히 문제 야! 라우팅 시스템을 이해하고 이해해야합니다. 지금까지 배운 것이 가장 힘듭니다! – XN16

+0

걱정이없는 alex, lifes 작은 신비가 해결되었습니다. hhmmm, 이제 더 큰 것, 삶의 의미 !! :-) –