如何在沒有表單的情況下將字符串數(shù)組發(fā)布到ASP.NETMVC控制器?我正在創(chuàng)建一個小應用程序來教自己ASP.NETMVC和JQuery,其中一個頁面是可以選擇的項目列表。然后,我想按一個按鈕,使用JQuery的POST函數(shù),向我的控制器發(fā)送一個列表(或類似的內(nèi)容),其中包含所選項目的ID。我設法獲得了一個數(shù)組,其中包含了所選元素的ID,現(xiàn)在我想發(fā)布它。我可以這樣做的一種方法是在頁面中有一個帶有隱藏值的虛擬表單,然后用所選的項設置隱藏的值,并發(fā)布該表單;不過,這看起來很粗糙。通過將數(shù)組直接發(fā)送到控制器,是否有更干凈的方法來實現(xiàn)這一點?我嘗試了一些不同的東西,但看起來控制器無法映射它正在接收的數(shù)據(jù)。以下是目前為止的代碼:function generateList(selectedValues) {
var s = {
values: selectedValues //selectedValues is an array of string
};
$.post("/Home/GenerateList", $.toJSON(s), function() { alert("back") }, "json");}然后我的控制器看起來像這樣public ActionResult GenerateList(List<string> values){
//do something}我得到的只是控制器參數(shù)中的“NULL”.有小費嗎?3 回答
3 回答

長風秋雁
TA貢獻1757條經(jīng)驗 獲得超7個贊
更新:我更新了jQuery,將“傳統(tǒng)”設置為true,這樣它將再次工作(per@dustinDavis‘答案)。
function test(){ var stringArray = new Array(); stringArray[0] = "item1"; stringArray[1] = "item2"; stringArray[2] = "item3"; var postData = { values: stringArray }; $.ajax({ type: "POST", url: "/Home/SaveList", data: postData, success: function(data){ alert(data.Result); }, dataType: "json", traditional: true });}
public JsonResult SaveList(List<String> values){ return Json(new { Result = String.Format("Fist item in list: '{0}'", values[0]) });}

莫回無
TA貢獻1865條經(jīng)驗 獲得超7個贊
添加回答
舉報
0/150
提交
取消