Search code examples
asp.net-mvc-5asp.net-routing

Multiple RoutePrefixes per controller using MVC Attribute routing?


With the new MVC Attribute routing, I know you can assign multiple Route attributes to a single ActionResult, but I am looking for a way to do the same at the RoutePrefix level. I have a controller which, in every action, should be accessible by three routes:

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

I tried putting three individual RoutePrefix attributes, but I get the error Deuplace RoutePrefix attribute. If I try to use a comma-separated list, I get Best override method for does not contain a constructor that takes 3 arguments.

Is it possible to set up a RoutePrefix so that it takes the three routes I want for my controller?


Solution

  • Running a bunch of tests I found out that I can just add 3 Route attributes to the controller level and it works the way I want.

    Edit: a better way to do it I found was using the regex match method

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