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

陪伴而非守候
TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
更新:我更新了jQuery,將“傳統(tǒng)”設(shè)置為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]) });}

慕容708150
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
- 3 回答
- 0 關(guān)注
- 603 瀏覽
添加回答
舉報(bào)
0/150
提交
取消