Voglio raggiungere il controller bici con questi URL:C'è un modo per avere un RoutePrefix che inizia con un parametro opzionale?
/bikes // (default path for US)
/ca/bikes // (path for Canada)
Un modo per ottenere che utilizza molteplici percorso Attributi per azione:
[Route("bikes")]
[Route("{country}/bikes")]
public ActionResult Index()
per tenerlo asciutto preferisco usare un RoutePrefix, ma multipla percorso prefissi non sono consentiti:
[RoutePrefix("bikes")]
[RoutePrefix("{country}/bikes")] // <-- Error: Duplicate 'RoutePrefix' attribute
public class BikesController : BaseController
[Route("")]
public ActionResult Index()
ho provato utilizzando solo questo percorso Prefisso:
[RoutePrefix("{country}/bikes")]
public class BikesController : BaseController
Risultato:/ca/bici opere,/bici 404s.
Ho provato a fare campagna opzionale:
[RoutePrefix("{country?}/bikes")]
public class BikesController : BaseController
stesso risultato:/ca/moto funziona,/Biciclette per 404s.
Ho provato dando paese un valore predefinito:
[RoutePrefix("{country=us}/bikes")]
public class BikesController : BaseController
stesso risultato:/CA/moto funziona,/bikes 404s.
C'è un altro modo per raggiungere il mio obiettivo utilizzando Attribute Routing? (E sì, so che posso fare questa roba registrando i percorsi in RouteConfig.cs, ma è quello che non sto cercando qui).
Sto usando Microsoft.AspNet.Mvc 5.2.2.
FYI: questi sono esempi semplificati - il codice vero e proprio ha un IRouteConstraint per le {country} valori, come:
[Route("{country:countrycode}/bikes")]
Sembra fantastico! Penso che potresti migliorare la tua risposta aggiungendo il codice dei due file. Dall'aiuto: "Cita sempre la parte più rilevante di un link importante, nel caso in cui il sito target sia irraggiungibile o sia permanentemente offline." –
@FrankvanEykelen ho aggiornato la mia risposta –