문제

ASP.NET MVC 응용 프로그램에 매핑하고 싶은 두 개의 경로가 있습니다.

  1. /사용자/로그인
  2. /user/{userId}/{username}/{action} (eg/user/1/blah/profile)

내가 정의한 경로는 다음과 같습니다.

    routes.MapRoute(
        "Profile",
        "Users/{userID}/{username}/{action}",
        new { controller = "Users", action = "Profile" }
    );

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

이것은 대부분의 경우 지금까지 훌륭하게 작동합니다. 다음 URL은 내 홈페이지에서 작동합니다.

<%= Html.ActionLink((UsersController x) => x.Login(), "Login") %>
<%= Html.ActionLink((UsersController x) => x.Profile(1, "blah") %>

이지도는 (정중하게) :

/사용자/로그인/사용자/1/blah

그러나/사용자/1/blah로 탐색 한 후에 로그인 URL은 즉시/users/1/blah/로그인으로 전환됩니다. 이 문제를 해결하는 방법이 있습니까?

도움이 되었습니까?

해결책

당신은 사용하고 싶습니다 <%=Html.RouteLink%>

이것은와 매우 유사합니다 여기서 볼 수있는 문제

다른 팁

당신의 경로가 승인 필터에 도달하고 있습니까? /users/1/blah 페이지를 보려면 로그인 해야하는 요구 사항이 있습니까? (예 : UsersController 클래스 또는 프로필 조치에 [승인] 속성이 있습니까?)

그렇다면 승인 필터가 아니라면 나는 고도로 이것을 구현할 것을 제안합니다 라우팅 디버거 도구 프로젝트에.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top