我有一個JavaScript函數,我傳遞了4個數組,其中每個數組都是 [1,2],只有int值或者[]裏面沒有值。這些被傳遞給Url.Action
命令。傳遞int數組到MVC控制器
function Filter(locations, machines, severities, messages) {
var url = '@Url.Action("Filter", "ActiveMessages")?' + $.param({
locations: locations, machines: machines, severities: severities, messages: messages });
$.ajax({
url: url,
method: 'POST',
traditional: true,
success: function (data) { }
});
}
我試着用$.param()
來構建參數。但是這並不能產生我期待的參數,我得到的是這樣的:"/ActiveMessages/Filter?locations%5B%5D=1"
我也試着這樣做:
decodeURIComponent($.param({ locations: filterlocations, machines: filtermachines, severities: filterseverities, messages: filtermessages }))
然後我得到的是這樣的: "/ActiveMessages/Filter?locations[]=1&locations[]=2"
有沒有其他方法可以將這樣一個數組解析爲一個url?
接收發生在控制器:
public async Task<ActionResult> Filter(int[] locations, int[] machines, int[] severities, int[] messages)
{
//TODO filter
}
調用此方法,但參數爲null;
當我開始使用這個工作的單個值,但需要擴展到一個數組。
var url = '@Url.Action("Filter", "ActiveMessages")' + '?locations=' + locations + '&machines=' + machines + '&severities=' + severities + '&messages=' + messages;
你爲什麼要通過URL傳遞它們? –
你會推薦什麼其他方式?我認爲這將是最簡單的方式,因爲數據不是私人的 –
我建議將它們傳遞給AJAX POST,並在數據屬性中包含所有數組。像這樣的東西http://stackoverflow.com/a/5489534/6157222 –