I am creating an ASP.NET MVC 5 application and I have some issues with routing. We are using the attribute Route
to map our routes in the web application. I have the following action:
[Route("{type}/{library}/{version}/{file?}/{renew?}")]
public ActionResult Index(EFileType type,
string library,
string version,
string file = null,
ECacheType renew = ECacheType.cache)
{
// code...
}
We only can access this URL if we pass the slash char /
in the end of url
, like this:
type/lib/version/file/cache/
It works fine but does not work without /
, I get a 404
not found error, like this
type/lib/version/file/cache
or this (without optional parameters):
type/lib/version
I would like to access with or without /
char at the end of url
. My two last parameters are optional.
My RouteConfig.cs
is like this:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
}
}
How can I solve it? Make the slash /
be optional too?
Maybe you should try to have your enums as integers instead?
This is how I did it
And my routing file
I can then make calls like
or
and it works fine...