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?
Multiple Routes You need to provide at least two parameters in MapRoute, route name, and URL pattern. The Defaults parameter is optional. You can register multiple custom routes with different names.
Yes, We can use multiple URLs to the same action with the use of a routing table. foreach(string url in urls)routes. MapRoute("RouteName-" + url, url, new { controller = "Page", action = "Index" });
Enabling Attribute Routing in ASP.NET MVC Enabling attribute routing in your ASP.NET MVC5 application is simple, just add a call to routes. MapMvcAttributeRoutes() method with in RegisterRoutes() method of RouteConfig. cs file. You can also combine attribute routing with convention-based routing.
there are no limits in creating routes. You can create as many route as you want in your RouteConfig. cs file. But make sure that you provide unique name value to each MapRoute function.
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/")]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With