2017-04-03 5 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では、私はこれが行われているだろうコントローラ名。これどうやってやるの?あなたは、コア

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

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

[controller]で同じことを行うことができます

答えて

4

は、ルートテンプレートを支援するためのトークンの交換です。必須ではありません。便宜上

ソースToken replacement in route templates ([controller], [action], [area])

、属性ルートは方形括弧([])にトークンを囲む ことによってトークンの交換をサポートします。トークン[action], [area]および[controller]は、 ルートが定義されているアクションのアクション名、エリア名、およびコントローラ名の値に置き換えられます。

関連する問題