2017-04-24 9 views
0

ermogliche haben Attribut in Routendatei Config-Routing und ich habe erklären Attribut Routing alsMultiple Reglertypen wurden, dass die angeforderte URL entsprechen

[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(); 
    } 

} 

In beiden oben genannten Controller einen statischen prifix hat und andere hat variable prefix aber ich bekomme mehrere Controller-Typen gefunden, die den URL-Fehler von diesen beiden Controller übereinstimmen.

Was ist falsch in diesem Routing-Muster.

+0

können Sie die URL anzeigen? – Usman

+0

URL wird wie (Domain/Empfangs-Angebot/new york-1) sein /////////// (Domain/usa/new york-1) in über zwei url usa sein kann Ersetzen Sie sie durch ein anderes Land, in dem das Angebot statisch ist. –

Antwort

0

Dies passiert, wenn die Attributroute mehreren Routen entspricht, können Sie sich diese Multiple controller types were found that match the URL ansehen. so, wenn Sie domain/receive-offer/new york-1 eingeben paßt es die erste Route und auch die zweite URL, da wird es receive-offer als ein Land betrachtet, um dieses Problem zu beheben wir Route Constraints verwenden können, um die Werte von Routen angeben, damit Ihre Route

[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(); 
     } 
    } 

sein wird, da destinationId und productId wird von int Typ sein und country wird alphabet sein, aber denken Sie daran, dass, wenn Sie Leerzeichen im Land nennen die Route hinzufügen wird so nicht funktionieren Sie regax anwenden müssen, oder Sie können wie HongKong

Räume zwischen dem Ländernamen entfernen
+0

Könnten Sie bitte den Zweck von: Alpha nach Land in DestinationController Route rechtfertigen. Oder jede Referenz, die ich suchen kann –

+0

@Bhuban seine sogenannte Routing-Constrain bedeutet, geben Sie den Typ des Wertes in der Route und hier Alpha bedeutet Alphabet Zeichen (a-z, A-Z). Sie können [Attribut-Routing] (https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/) Abschnitt Route Constraints – Usman

+0

den Grund lesen warum ich es benutzt habe, um die Route ein bisschen einzigartig zu machen, weil 'receive-offer' eine Zeichenkette ist und der Route' {country} 'entspricht. Durch das Hinzufügen von alpha' {country: alpha} 'bedeutet das kein Sonderzeichen wie' -' – Usman

Verwandte Themen