2017-04-24 9 views
0

と一致することが見出されたIは、経路設定ファイルにルーティング属性を有効にしていると私は、1つの静的prifixを有し、他方は可変接頭 を有する二つのコントローラ上で複数のコントローラタイプが要求されたURL

[RoutePrefix("receive-offer")] 
public class ReceiveOfferController : Controller 
{ 
    // GET: ReceiveOffer 
    [Route("{destination}-{destinationId}")] 
    public ActionResult Index(int destinationId) 
    { 
     return View(); 
    } 
} 


public class DestinationController : Controller 
{ 
    [Route("{country}/{product}-{productId}")] 
    public ActionResult Destination(string country, string product, int productId) 
    { 
     return View(); 
    } 

} 

としてルーティング属性を宣言していますしかし私はこれらの2つのコントローラからのURLエラーと一致する複数のコントローラタイプが見つかりました。

このルーティングパターンで何が問題ですか。

+0

できますURLを表示しますか? – Usman

+0

urlはでき /////////// (ドメイン/アメリカ/ニューヨーク-1)(ドメイン/受信オファー/ニューヨーク-1) などの上記2 URL USAになります受信オファーが静的である他の国と交換してください。 –

答えて

0

これは、属性ルートが複数のルートと一致する場合に発生します。これは、このMultiple controller types were found that match the URLを見ることができます。あなたがdomain/receive-offer/new york-1を入力するときに、あなたのルートは以来

[RoutePrefix("receive-offer")] 
    public class ReceiveOfferController : Controller 
    { 
     // GET: ReceiveOffer 
     [Route("{destination}-{destinationId:int}")] 
     public ActionResult Index(int destinationId) 
     { 
      return View(); 
     } 
    } 


    public class DestinationController : Controller 
    { 
     [Route("{country:alpha}/{product}-{productId:int}")] 
     public ActionResult Destination(string country, string product, int productId) 
     { 
      return View(); 
     } 
    } 

になるよう私たちは、ルートの値を指定するRoute Constraints を使用することができ、これを解決するためには、まずルートと一致し、また、2番目のURLは、それが国としてreceive-offerを検討するため、 destinationIdproductIdはタイプintのものであろうとcountryalphabetをすることができますが、そうは動作しませんルートに名前を付ける国にスペースを追加する場合は、regaxを適用する必要がありますことを心に留めておくか、HongKong

のような国の名前の間にスペースを削除することができます
+0

DestinationControllerルートの国の後のアルファ:の目的を正当化してください。または私が探すことができる参照 –

+0

@Bhubanはルーティング制約と呼ばれ、ルートの値のタイプを指定することを意味し、アルファベットはアルファベット文字(a-z、A-Z)を意味します。 [属性ルーティング](https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/)のセクションを参照してください。ルートの制約 – Usman

+0

理由なぜ 'receive-offer'が文字列で' {country} 'のルートにマッチするので、私はそれを少し独特のルートにするのになぜ使われたのですか?アルファ{country:alpha}を追加すると '-' – Usman

関連する問題