Использование 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));