动态Ajax ActionLink RouteValues

时间:2011-09-07 13:01:23

标签: .net ajax asp.net-mvc-3 actionlink

我有一个ActionLink链接

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

我想在点击时插入路线值“id”。 我想要读取的值是一个下拉列表,所以我在javascript中得到了类似的东西来获取值:

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

我已经读过这篇文章了 set ActionLink routeValues dynamically 但是我不确定语法应该是什么样的,有人可以帮助我吗?

此致

2 个答案:

答案 0 :(得分:3)

使用ajax选项的OnBegin重载。传入的参数之一是请求对象。

您可以从该下拉列表中提取值并修改网址。

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

HTH

的Si

答案 1 :(得分:0)

我知道这是一个相当古老的帖子,但我只是在寻找类似的解决方案。基于Slicksim上面的回答和Adam Tuliper的评论,我使用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>