2014-06-29 17 views
6

Con il nuovo routing Attributo MVC, so che è possibile assegnare più attributi Route a un singolo ActionResult, ma sto cercando un modo per fare lo stesso al livello RoutePrefix. Ho un controllore che, in ogni azione, dovrebbe essere accessibile da tre itinerari:RoutePrefix multipli per controller utilizzando il routing degli attributi MVC?

/Games/{Title}/Characters/{Route} /Books/{Title}/Characters/{Route} /Cinema/{Title}/Characters/{Route}

Ho provato a mettere tre singoli RoutePrefix attributi, ma ottengo l'errore Deuplace RoutePrefix attribute. Se provo a utilizzare un elenco separato da virgole, ottengo Best override method for does not contain a constructor that takes 3 arguments.

È possibile impostare un RoutePrefix in modo che utilizzi i tre percorsi che desidero per il mio controller?

risposta

13

Eseguendo una serie di test ho scoperto che posso aggiungere solo 3 attributi Route al livello controller e funziona nel modo che preferisco.

Edit: un modo migliore per farlo ho trovato stava usando l'espressione regolare partita metodo

[RoutePrefix("{Type:regex(Games|Cinema|Books)}/{SectionRoute}/Character/")]

+0

prefetto ... fatta la mia giornata ... – microchip78

+0

Come fareste senza una regex? Posso solo aggiungere più linee di attributo? '[RoutePrefix (" prefix1 ")] [RoutePrefix (" prefix2 ")]' – Zapnologica

+1

@Zapnologica È passato un po 'di tempo da quando l'ho fatto, ma se ricordo bene lo fai come il tuo esempio o la tua virgola li separa come '[RoutePrefix ("prefisso1"), RoutePrefix ("prefisso2")] 'prova entrambi e guarda cosa succede – Matthew

Problemi correlati