I have written following jquery in my partial view:
$.ajax({
type: \"POST\",
url: \'@Url.Action(\"PostActionName\", \"ControllerName\")\'
I have functions to fetch invoking action and controller names, but not sure how I can pass them in @Url.Action
Well, you could call those functions. For example if they are extension methods to the UrlHelper class:
window.location = '@Url.Action(Url.MyFunction1(), Url.MyFunction2())'
or if they are just static functions:
window.location = '@Url.Action(SomeClass.MyFunction1(), SomeClass.MyFunction2())'
If on the other hand the values that need to be passed are known only on the client you could do the following:
var param = 'some dynamic value known on the client';
var url = '@Url.Action("SomeAction", "SomeController", new { someParam = "__param__" })';
window.location.href = url.replace('__param__', encodeURIComponent(param));
UPDATE:
It seems that you are just trying to fetch the current controller and action which could be achieved like that:
@{
string currentAction = Html.ViewContext.RouteData.GetRequiredString("action");
string currentController = Html.ViewContext.RouteData.GetRequiredString("controller");
}
and then:
window.location.href = '@Url.Action(currentAction, currentController)';