2011-09-07 127 views
4

我有一個ActionLink的鏈接此動態的Ajax ActionLink的RouteValues

@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 ,但我不知道怎麼樣語法應該看起來像,有人可以幫助我嗎?

Regards

回答

3

使用ajax選項的OnBegin重載。傳入的參數之一是請求對象。

你可以拉出來的值的下拉列表那裏並修改URL。

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

HTH

+0

在這裏要小心。您的網址可能會添加各種參數,例如。 X-請求-隨着與上述代碼吹即遠離(也將其添加到URL查詢部,以及所述高速緩存無效化值將在這裏消除)。我要麼做一個模式就可以更換或添加值:前request.url + =「&搜索=」 + $(「#搜索」)VAL(); –

0

我知道這是一個很老的職位,但我只是在尋找一個類似的解決方案。基於Slicksim的回答上面和亞當Tuliper的評論,我實現了使用數據 - 屬性以允許重複使用的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>