2011-10-06 4 views
2

ASP.Net MVC : 라우팅 재 작성

다음과 같이 설정합니다.

Controller -> Controller 
Action  -> Admin_Action 

예 :

/admin/Users/Create 

Controller -> Users 
Action -> Admin_Create 

/admin/Users/Delete/1 

Controller -> Users 
Action -> Admin_Delete(1) 

라우팅 규칙을 사용하여 달성 할 수 있습니까?

답변

6

나는 ... 다음 경로 매핑이 작동합니다

routes.MapRoute("YourRouteName", "admin/controller/action/{id}", new { controller = "Controller", action = "Admin_Action", id = UrlParameter.Optional }); 
+0

내 질문에 분명하다고 생각되지 않습니다. 관리자에 URI가있을 때 관리자 앞에 작업을 추가해야한다는 의미입니다. . (지금 내 질문에) –

+1

그 경우 다른 컨트롤러 "AdminController"를 만드는 것이 좋습니다. 경로 매핑에 "admin/.."이있을 때 사용됩니다. 또한 "영역"기능을 사용하는 방법을 살펴보십시오 ... 주로 유지 관리의 관점에서 뚱뚱한 컨트롤러를 만드는 것을 피해야합니다. – brodie

+0

그 의견을 보내 주셔서 감사합니다. Area 함수를 살펴 보겠습니다. 나는 이것이 실제로 내가하려고하는 것에 대한 해답이라고 생각한다. :) –

1

사용이 생각 :

routes.MapRoute("Admin", // Route name 
    "admin/{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Controller", action = "Admin_Action", id = UrlParameter.Optional } // Parameter defaults 
); 

을하지만 당신이 원한다면 당신은 또한 www.example.com/admin/을 할 수

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

업데이트

routes.MapRoute(
    "AdminArea",            
    "admin/{controller}/{action}/{id}",      
    new { controller = "Users", action = "Index", id = UrlParameter.Optional } 
); 
+0

미안하지만, 나는 내 질문이 불분명하다는 것을 깨달았다. 이제 제대로 편집했습니다. –

+0

컨트롤러 이름을 사용자로 변경하면 업데이트가 표시됩니다. –

1

this answer에 설명 된대로 RouteHandler을 사용하여 작업에 이름을 추가 할 수 있습니다. 나는 당신의 모든 관리 작업을 배치해야 브로디 동의

routes.MapRoute("Admin", // Route name 
    new Route("admin/{controller}/{action}/{id}", 
    new RouteValueDictionary( 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }), 
     new AdminHandler() 
    ) 
); 

을하지만 : 당신이 작성하는 경우

는 RouteHandler는 다음과 같이 다음 경로를 정의 할 수 있습니다, 당신의 행동에 "Admin_`을 씁니다 AdminHandler 이름 별도의 영역으로 더 나은 디자인이므로 보안 및 유지 관리가 쉬워집니다.