Perhaps this is impossible, but I figured I would ask anyway. I'm working on an ASP.NET MVC application that uses jquery/AJAX extensively. One of the AJAX tasks that gets performed is a call to controller action that returns a URL to redirect the user to.
What I would like to do is to have the same controller context when making an AJAX call as I do on the current page. The reason for this is because the controller action called by AJAX makes use of the Url.Action()
method and I need it to use the same route values as what is currently being used on the current page.
So for example, if a user is currently on: /Site/Search/Advanced/Widgets/Black and Blue/1/Descending
, mapping to a route of Site/Search/Advanced/{objectType}/{query}/{pageNum}/{displayMethod}
, with {objectType}
defaulting to "Cars" (not "Widgets").
I would like a call to Url.Action("Advanced", "Search", new {query="Something else"})
to generate /Site/Search/Advanced/Widgets/Something else/1/Descending
.
As it stands, the call will generate /Site/Search/Advanced/Cars/Something else
, because the controller does not what context it is in.
My alternative is to specify the additional parameters directly in the Url.Action
call, but that would require a lot more complexity with values coming in and out of jquery AJAX through various hidden fields, which would be a huge mess...
Any ideas?