Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Url.Action in javascript

I am trying to use the Url.Action method to correctly generate the required Url for an ajax call but I'm running into problems when trying to build the RouteValues, here's the problem line of code:

var url = @Url.Action("ViewFile", "Default", new { itemId = $(this).data("itemid") });

As you can see, I'm trying to assign the result of the JQuery $(this).data("itemid") to itemId in the RouteValues.

Is there a way using razor syntax which will allow this code to compile?

like image 829
philreed Avatar asked Jul 17 '13 13:07

philreed


2 Answers

You are confusing client side with server side. Try something like this:

var url = '@Url.Action("ViewFile", "Default")?itemId=' + $(this).data("itemid");

when you write a @ with razor view engine, you are writing a instruction that will be process on the server side at the end of this command. In your case you want to add a parameter in the url that comes from the javascript, so, just concat on the client side the value with the url generated by the @Url helper.

PS: I am assuming you are using the Default Route Tables.

like image 86
Felipe Oriani Avatar answered Oct 21 '22 13:10

Felipe Oriani


Another way is to create a place holder and then replace it:

var url = '@Url.Action("GetOrderDetails", "Home", new { id = "js-id" })'
              .replace("js-id", encodeURIComponent(rowId)); 
like image 23
VahidN Avatar answered Oct 21 '22 14:10

VahidN