2011-01-17 4 views
1

내 ASP.NET MVC 응용 프로그램에서이 Route 작업을 수행하는 방법은 무엇입니까?

다음과 같은 경로를 원한다 :

MyController/Action/categoryid/productid

그래서 Global.asax 파일에서 다음과 같이 만들었다.

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{categoryid}/{productid}", 
     new { controller = "MyController", 
      action = "Action", 
      categoryid = UrlParameter.Optional, 
      productid = UrlParameter.Optional 
     } 
    ); 

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

그러나 Mycontroller/action/2/3로 이동할 때 자원은 다음과 같다. 찾을 수 없습니다.

+0

귀하의 방법을 알려 주시기 바랍니다. – SLaks

답변

3

이 코드는 어떻게 작성됩니까?"Default"을 경로 이름으로 정의 두 번은 컴파일이 중지되어야합니다.

그 중 하나의 이름을 다른 것으로 변경하면 제대로 작동해야합니다.

action에 다른 매개 변수가 있거나 사용자가 GET을 사용하여 [HttpPost]을 정의했을 수 있습니다.

+0

예! 너는 옳은 대답을 얻었다! 라우트에 중복 이름을 사용하고있었습니다! – johndoe

1

필 하크 (Phil Haack)의 ASP.NET Routing Debugger이라는 유용한 도구가 있는데 주소 표시 줄에 다양한 URL을 입력하여 어느 경로와 일치하는지 확인할 수 있습니다.

0

이것은 당신이 원하는 원하는 :

{MyController에}/{동작}/{카테고리 ID}/{제품 ID},

하지만 당신의 MyController에에 더 meaningfyll 이름을 제공해야합니다/액션 사용자/수정/2/3 같은 URL의 일부

+0

예! 의미있는 이름이 있습니다! 이것은 여기에 게시하기위한 것입니다. 이것은 내가 원하지만 YR 솔루션은 무엇인가! – johndoe

+0

그런 다음 다른 답변에서 언급 한 경로 디버거를 살펴보십시오. 그것은 훌륭한 도구입니다. – Roger

관련 문제