2013-07-17 3 views
12

Я пытаюсь использовать метод Url.Action, чтобы правильно генерировать требуемый Url для вызова ajax, но у меня возникают проблемы при попытке построить RouteValues, вот проблема строки кода:Использование Url.Action в javascript

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

Как вы можете видеть, я пытаюсь присвоить результат в JQuery $(this).data("itemid") к itemId в RouteValues.

Есть ли способ использования синтаксиса бритвы, который позволит компилировать этот код?

ответ

23

Вы путаете клиентскую сторону со стороной сервера. Попробуйте что-то вроде этого:

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

когда вы пишете @ с видом бритвенного двигатель, вы пишете инструкцию, которая будет процесс на стороне сервера в конце этой команды. В вашем случае вы хотите добавить параметр в URL-адрес, который поступает из javascript, поэтому просто сравните с клиентской стороной значение с URL-адресом, сгенерированным помощником @Url.

PS: Я предполагаю, что вы используете таблицы маршрута по умолчанию.

+3

Ах Конечно Jquery не побежит, когда код на стороне сервера выполняется, как глупо с моей стороны. Благодарю. [Похищает голову от стыда] – philreed

9

Другой способ заключается в создании держателя место, а затем заменить его:

var url = '@Url.Action("GetOrderDetails", "Home", new { id = "js-id" })' 
       .replace("js-id", encodeURIComponent(rowId)); 
Смежные вопросы