2016-08-22 8 views
0

[controller]パラメータを使用して、ルート内の別のコントローラを参照できますか?私は別のコントローラのルートに基づいて変更したいコントローラーを持っています。asp.netコアのルート属性に異なるコントローラを使用

例:

コントローラ1:

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

コントローラ2:

[Route("[controller1]/user/[controller]")]//how can I make this route refer to controller1? 
public class Controller2:Controller{} 
+0

具体的な問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。この質問を明らかにするには、[How to Ask](http://stackoverflow.com/help/how-to-ask)ページを参照してください。 – Nkosi

答えて

0

いいえ、それはいくつかの他のコントローラ名にバインドする[controller]を取得することはできません。これは、常にルータが選択したコントローラを参照します。

[controller]テンプレートは実際にはと一致しません。

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

ルート/testにマッチします:それは<Name>ルートでトークンがあるパターン<Name>Controllerを一致させようとします。 (詳しくはRoutingマニュアルにあります。)

あなたは任意の名前を使用してルートを接頭辞にしたい場合は、あなたがそれらをハードコーディングすることができます

[Route("other/user/[controller]")] 
public class TestController : Controller { } 

これは/other/testと一致します。

あなたは、文字列をハードコードしない場合、私は定数を使用してお勧めします:

public const string OtherRoute = "other"; 

[Route(OtherRoute + "/[controller]")] 
public class TestController : Controller { } 

はこれも/other/testと一致します。

関連する問題