2010-08-01 1 views
1

나는이 개 내 MVC 응용 프로그램에서 매핑 된 경로가 : 대부분의 경우ASP.Net MVC 경로 매핑 충돌을 해결하려면 어떻게해야합니까?

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

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

} 

을,이 아무런 문제를 제기하지 않지만/계정/로그온보기를 호출 할 때 나는 문제를 공격 할. 내 ActionLink 구문은 (내가 널 경로 값 등을 포함하여 변화의 몇 가지를 해봤) 다음과 같습니다 :이보기에

<%= Html.ActionLink("Log On", "LogOn", "Account") %> 

브라우징은 404 오류 ("리소스를 찾을 수 없습니다")을 발생합니다. 이상적으로 나는 거대한 양의 재 작업을 피하고 싶다. 그래서 이러한 충돌을 피하는 가장 좋은 방법은 무엇일까요?

답변

1

컨트롤러의 리터럴과 함께이 변형을 시도해 보셨습니까?

public class MvcApplication : System.Web.HttpApplication 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

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

이 잡을 것 : http://localhost/Project/12http://localhost/Project/12/Edithttp://localhost/Project/2/View/2

그러나 두 번째 rounte에 http://localhost/Account/LogOn을 전달할 것입니다. 예?

+0

Gaaa! 그것은 항상 가장 간단하고 명백한 답변입니다. 그게 다 끝났어. 감사. –