我想從我的視圖模型(以ko.observableArray
的形式)傳遞一個字符串數組到Asp.net MVC中的控制器。如何將ko.observableArray傳遞給MVC控制器?
由於ko.observableArray
是一個對象而不是數組,它不能簡單地通過$.ajax
方法傳遞並用作控制器端的數組。
如何將ko.observableArray
中的數據傳遞給控制器,以便我可以將它用作控制器端的數組?
我想從我的視圖模型(以ko.observableArray
的形式)傳遞一個字符串數組到Asp.net MVC中的控制器。如何將ko.observableArray傳遞給MVC控制器?
由於ko.observableArray
是一個對象而不是數組,它不能簡單地通過$.ajax
方法傳遞並用作控制器端的數組。
如何將ko.observableArray
中的數據傳遞給控制器,以便我可以將它用作控制器端的數組?
敲除具有兩個實用功能,稱爲ko.toJS
和ko.toJSON
。
var myPlainObject = ko.toJS(root)
將遍歷您的對象並將任何可觀察值轉換爲普通的JavaScript屬性。
var myJSONstring = ko.toJSON(root)
將執行相同的操作,然後對結果執行JSON.stringify
。
因此,您可以在viewModel上使用這些函數來獲取普通的JavaScript對象。
來自文檔的信息here。
如果您observableArray的項目不包含可觀,那麼你可以簡單地僅僅通過做myObservableArray()
更新獲取底層數組:基於評論。這對我來說工作得很好:
var viewModel = {
items: ko.observableArray(["one", "two", "three", "four"]),
sendItems: function() {
$.ajax({
type: "POST",
url: "@Url.Action("Test")",
data: ko.toJSON(viewModel.items),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
if (data) {
alert(ko.toJSON(data));
}
}
});
}
};
面對那樣一個動作:
//just echo back data
public JsonResult Test(List<String> myList)
{
return Json(myList);
}
這是否匹配你正在嘗試?再次
感謝您的幫助,我的情況下,observableArray被存儲字符串數組,我想檢索控制器側陣列,這樣我可以在其上使用一個循環,這樣的: >>公共JsonResult測試(列表 myObservableArray) 但是,如果我直接發送它傳遞一個對象,而不是一個數組,我無法通過循環內部的observableArray獲取字符串。 我試圖使用ko.toJSON(),但我仍然無法弄清楚如何獲取observableArray並將其轉換爲控制器端的字符串數組。 –
nelsonwrong
已更新的答案。希望這可以幫助。 –
感謝您的幫助,它終於有效:) – nelsonwrong