0
경로에 매개 변수를 전달하려고하는데 어려움을 겪고 있습니다. 아래 그림과 같이 내가 URL에 "기사/230"을 입력 할 때이 세부 조치를 호출해야합니다 :ASP.NET MVC 3.0 경로 및 전달 매개 변수
public ActionResult Detail(int id)
{
return View();
}
나는 내 Global.asax 파일에 다음과 같습니다
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Articles", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"ArticleDetails", // Route name
"Articles/{id}", // URL with parameters
new { controller = "Articles", action="Detail", id = 0 } // Parameter defaults
);
}
그리고 보기는 다음과 같습니다.
감사합니다. Darin! 그것이 작동했지만 왜 주문이 중요하고 원래의 코드에서 순서가 잘못되어도 경로와 일치하지 않는 이유는 무엇입니까? – johndoe
라우트 엔진은 게으른 일치를 기반으로 작동합니다. 기본 경로는 일치시킬 항목이 없으므로 (모든 값은 기본값을가집니다) 다른 규칙보다 먼저 일치합니다. –
경로 정보를 평가하는 * 순서가 있어야하므로 순서가 중요합니다. :) 기사/123이 존재하지 않은 "기사"컨트롤러의 "123"작업을 호출하려고했기 때문에 원래의 주문이 작동하지 않았습니다. 첫 번째 (기본) 경로와 일치합니다. – Sapph