IamSneaky
IamSneaky

Reputation: 23

Attribute routing default url

I have the following method in my controller, using C# MVC with Attribute roouting:

[Route("")]
[Route("/something-else")]
public IActionResult Index(){

}

Im using two different routes to access this functionallity, since i want customers with bookmarks to the previous implementation to work. The problem is that i cant specify which of these Routes will be the default one when i issue the action like this:

<a asp-controller="FOO" asp-action="Index">

Everythiing works as expected, both URLs work, but i cant specify which of these routes will be used when navigated to by the action, via the action above. I would like that the first route be used everytime i navigate to this action, except when someone explicitly writes the old url into the browser.

Are there any default attributes to the [Route("")] tag?

Upvotes: 1

Views: 48

Answers (1)

DavidG
DavidG

Reputation: 118937

The RouteAttribute class has an Order property. From the docs:

Gets the route order. The order determines the order of route execution. Routes with a lower order value are tried first.

For example:

[Route("/something-else", Order = 1)]
[Route("", Order = 2)]
public IActionResult Index(){

}

As an aside, I would strongly discourage you from serving the same page with multiple URLs. Google's indexing will give you worse ranking because of it. Instead, consider returning a redirect to the new URL instead.

Upvotes: 3

Related Questions