2017-04-03 2 views
2

MVC에서 라우팅 컨트롤러 이름을 변경할 수 있습니까? 나는 실제보다 더 내 경로에 대해 다른 이름을 사용하려는컨트롤러에 다른 경로 템플릿 사용

[Route("[controller]")] 
public class ProductsController : Controller 
{ 

    [HttpGet("GetBy/{id}")] 
    public MyObject GetBy(int id) 
    { 
     return something(id); 
    } 
} 

:

[RoutePrefix("MySpecialSauce")] 
public class ProductsController : Controller 
{ 
    [Route("GetBy/{id}")] 
    public MyObject GetBy(int id) 
    { 
     return something(id); 
    } 
} 

지금은 찾을 수있는 모든 컨트롤러의 기본 이름을 사용하는 것입니다 MVC 5에서 나는이 작업을 수행 한 것 컨트롤러 이름. 어떻게 할 수 있니?

답변

4

당신은

[Route("MySpecialSauce")] 
public class ProductsController : Controller { 

    [HttpGet("GetBy/{id:int}")]//Matches GET MySpecialSauce/GetBy/5 
    public MyObject GetBy(int id) { 
     return something(id); 
    } 
} 

[controller] 코어

에서 동일한 기능을 수행 할 수있는 것은 경로 템플릿에 도움이 토큰 교체입니다. 의무 사항은 아닙니다. 편의를 위해

소스 Token replacement in route templates ([controller], [action], [area])

이 루트는 평방 중괄호 토큰 ([, ])를 둘러싸는 에 의해 토큰 교환을 지원하기 때문이다. 토큰 [action], [area][controller]은 경로가 정의 된 작업의 작업 이름, 영역 이름 및 컨트롤러 이름의 값으로 대체됩니다.

관련 문제