Использование Url.Action в javascript

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

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

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

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

Ответ 1

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

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

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

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

Ответ 2

Другой способ - создать держатель места, а затем заменить его:

var url = '@Url.Action("GetOrderDetails", "Home", new { id = "js-id" })'
              .replace("js-id", encodeURIComponent(rowId));