2013-10-10 3 views
0

MVC 4에 문제가 있습니다. 실제로 뭔가 사소한 것 같지만 마지막 날에 나를 괴롭 히고 있습니다. 알아낼 수 없습니다. 나는라는 이름의 컨트롤러가RedirectToAction()이 잘못된 URL을 생성합니다.

http://www.example.com/my-dashed-url 

:

public class MyDashedUrlController: Controller 
{ 
} 

을 나는이 같은 두 경로가 있습니다

나는이 URL이 나는 인덱스에 도착

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

routes.MapRoute("my-dashed-url", 
       "my-dashed-url/{action}", 
       new { controller = "MyDashedUrl", action = "Index" }); 

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

그냥 벌금. 그러나, 나는이 작업을 수행 할 때

public ActionResult Index() 
    { 
     if (NoUserIsLoggedOn) 
      return RedirectToAction("Logon", "MyDashedUrl"); 

     return View(); 
    } 

    public ActionResult Logon() 
    { 
     Contact c = GetContact(); 

     return View(c); 
    } 

그것은 제대로 "로그온"조치에 저를 리디렉션하지 않습니다. 그것은 저를 리디렉션해야합니다

http://www.example.com/my-dashed-url/logon 

대신 그것은 저를 재 시도 : (404 찾을 수 없음)

http://www.example.com/logon 

... 작동하지 않는 무언가를 놓침. 누구든지 그것을 발견 할 수 있습니까? 누구든지 더 많은 정보가 필요하면 알려주세요.

그리고이 컨트롤러에서 똑같은 작업을하는 모든 RedirectToAction입니다. 그들이 '으로보고, 그것이 내가 정의 된 경로에 뭔가를하는 것 같아요 http://www.example.com/logon

을, 그러나 나는 결함을 찾을 수없는, • Html.BeginForm ("로그온", "MyDashedUrl은")도 생성 할 모두 똑같아. 루트는 것을 기억

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

    routes.MapRoute(
     "my-dashed-url", 
     "my-dashed-url/{action}", 
     new { controller = "MyDashedUrl", action = "Index" } 
    ); 

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

: 내가 MVC에서 기본 일 외에 내 노선을 모두 사용하지 않으면, 문제는 같은

답변

1

이 전에 기본 하나를 당신이 사용자 정의 경로 을 선언했는지 확인 남아 귀하가 선언 한 순서대로 평가됩니다. 따라서 요청과 일치하는 첫 번째 경로가 사용됩니다. 기본 경로 다음에 맞춤 경로를 선언하면 기본 경로가 요청과 일치합니다.

+0

답변 해 주셔서 감사합니다. 불행히도 내 경로가 이미이 순서로 정의되어 있기 때문에 기쁨이 없습니다. 이 질문을 반영하도록 질문을 업데이트하겠습니다. –

+0

난 그냥이 설치를 테스트하고 그것은 나를 위해 일했다. 어쩌면 문제가 다른 곳에 있을지도 모릅니다. 새로 생성 된 응용 프로그램에서 이것을 재현 할 수 있습니까? –

관련 문제