2012-07-21 6 views
1

일부 동적 라우팅이 필요합니다. 따라서 내 경로는 다음과 같습니다.동적 ASP.net MVC 라우팅

{UserName} 
{UserName}/Edit/{id} 
{UserName}/Delete/{id} 

사용자가 사용자 컨트롤러로 라우팅되는 위치입니다. 하지만 난 여전히 같은 컨트롤 경로 유지하려는 : 나는 그것을 삭제 편집에 대한 OrdersController가라는 말 물리적 컨트롤러에 직접 원하는 그래서 기본적으로

{Controller}/Edit/{id} 
{Controller}/Delete/{id} 

을하지만, 누군가에 /가 jdoe를 이동했을 경우에 /이 사용자의 컨트롤러로 전송 .

내 경로에서 어떻게해야합니까?

답변

1

은 여러 경로를 생성하고, 그것은하지 "정말"위 한 쉽게,하지만 그것의 JIST이다있어 적절한 순서

// one route for Users 
routes.MapRoute("Users", 
    "{username}/{action}/{id}", 
    new { controller = "Users", action = "Index", username = string.Empty, id = UrlParameter.Optional }, 
    new { id = @"\d+" } 
); 
// one route for everything else 
routes.MapRoute("Default", 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional}, 
    new { id = @"\d+" } 
); 

에 보관해야합니다. 사용자 이름을 확인하려면 RouteConstraint을 추가해야합니다.

마지막으로 username 매개 변수를 사용하는 경우 ID가 필요한 이유는 무엇입니까? 그냥 생각. 이외에도


: 당신에 유래에 여기에 사용자 섹션을 보면
이 , 더이 같은 라우팅 모습을 볼 수 있습니다.

  • 사용자/{ID}/{사용자 이름}
  • 사용자/{ID}/편집
  • 사용자/{ID}/나는 개인적으로이 많은 것을 말할 것

삭제 달성 할 일이 적어 ...하지만 이봐, 나야.

+0

내가 잘못 생각할 수도 있습니다. 첫 번째 경로가 컨트롤러 이름과 일치하고 두 번째 경로에 도달하지 못하고 요청을 처리 할 수있는 올바른 컨트롤러를 사용하지 못한다고 생각합니다. 잘못된 경우 Pls. – codingbiz

+0

제 답변에 대한 사소한 업데이트를했습니다. 기본적으로 그는 [RouteConstraint] (http://blogs.planetcloud.co.uk/mygreatdiscovery/post/Custom-route-constraint-to-validate-against-a-list.aspx)를 추가해야합니다. –