Динамический Ajax ActionLink RouteValues - PullRequest
4 голосов
/ 07 сентября 2011

У меня есть ссылка на ActionLink

@Ajax.ActionLink("Delete it!", "Delete", new {id = getTheID}, new AjaxOptions { Confirm = "Really?", HttpMethod = "Delete", UpdateTargetId = "ddlRoles" })

и я хочу вставить значение маршрута "id" при клике. Значение, из которого я хочу прочитать, является раскрывающимся списком, поэтому я получил что-то вроде этого в javascript, чтобы получить значение:

$('#ddlRoles :selected').val()

Я уже читал этот пост установить ActionLink routeValues ​​динамически но я не уверен, как должен выглядеть синтаксис, кто-то может мне помочь?

Привет

Ответы [ 2 ]

3 голосов
/ 28 августа 2012

Используйте перегрузку OnBegin опций ajax.Одним из передаваемых параметров является объект запроса.

Вы можете извлечь значение из выпадающего списка и изменить URL.

function onBegin(xhr, request)
{
     request.url = "@Url.Action("SomeAction", "SomeController")/" + $("ddl").val();
}

HTH

Si

0 голосов
/ 23 августа 2016

Я знаю, что это довольно старый пост, но я просто искал похожее решение. Основываясь на ответе Slicksim выше и комментарии Адама Тулипера, я реализовал приведенное ниже решение с использованием атрибута data, чтобы разрешить повторяющееся использование функции javascript. Поэтому я подумал, что буду публиковать сообщения, чтобы помочь другим.

@Ajax.ActionLink("Click Me", "ActionName", null, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "TargetID", OnBegin = "updateHref" }, new { data_dependentid = "DependentFieldName" })

<script>
        function updateHref(xhr, request) {
            var requester = $(this);
            var dependentid = $('#' + requester.attr('data-dependentid')).val();
            var requestParams = request.url.split('?');
            request.url = requestParams[0] + '/' + dependentid + '?' + requestParams[1];
        }
</script>
...