Edit: Sorry guys, but I wasn’t seeing this behavior when I came into work the next day and couldn’t reproduce it. Something else must have been going on. I was going to delete the question but you can’t do that anymore. Since there aren’t any upvotes anywhere, no harm done.
I’m pulling data in to a div via a jQuery ajax call. Since I’m using IE9 primarily, I need to disable output caching in jQuery using cache: false, on the ajax call. That produces a URL that looks like:
http://localhost/site/UserDetails.mvc/48d76cdd-da6f-414d-ba63-f24708d351ff?_=1315347866786
What I actually want is:
http://localhost/site/UserDetails.mvc/48d76cdd-da6f-414d-ba63-f24708d351ff
Note the ?_=1315 toward the end of the first one. I’m pretty sure that’s a timestamp that jQuery is adding to prevent output caching. This is breaking my mvc routing, which is expecting a single ID field at the end of the route:
routes.MapRoute(
"DefaultNoAction", // Route name
"{controller}.mvc/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
So I’m getting a 404 for the URL that ends with the timestamp. I’m pretty new to MVC and I don’t know how to tell the router that any url parameter that is named _ should be ignored. How would I do this?
Take a look at the ASP.NET MVC: url routing vs querystring thread, where discussed how to handle this case.