[英]Pass Array of JavaScript objects to PageMethod
情況如下:我想遍歷帶有輸入控件的表,收集值,然后將它們提交給 ASP.NET PageMethod
以將數據保存到數據庫中。 我已經把所有的集合都弄明白了,但是我收到一個錯誤,提示字符串不能轉換為Dictionary<string, object>
。
所以我最終將這樣的東西傳遞給具有以下簽名的方法
[
{ 'id': '383840923', 'name': 'fred', 'car':'honda' },
{ 'id': '243', 'name': 'joe', 'car':'honda' },
{ 'id': '4323423', 'name': 'paul', 'car':'honda' },
{ 'id': '38384234230923', 'name': 'ted', 'car':'honda' },
]
public static bool SaveData(Dictionary<string, object>[] items) {...}
我知道如果正確聲明,我可以來回傳遞整個類對象,並且 ASP.NET 將為我處理轉換,但我不需要傳遞整個類,只需要傳遞幾個屬性。
編輯:我正在使用 jQuery 將帖子發回服務器。
我在這里做錯了什么?
如果您使用 DTO ,ASP.NET AJAX 將自動為您反序列化。 服務器端的類似內容將匹配您發送的 JSON 數組:
public class PeopleAndCarsDTO
{
public int id { get; set; }
public string name { get; set; }
public string car { get; set; }
}
public static bool SaveData(List<PeopleAndCarsDTO> items) {...}
我想出了問題所在。 在將數組作為$.ajax
調用的一部分發送之前,我將數組用引號括起來,因此它被視為字符串而不是數組。
$.ajax({
type: "POST",
url: "<%= Response.ApplyAppPathModifier(Request.Path) %>/UpdateAcademicItems",
dataType: "json",
contentType: "application/json; charset=utf-8",
data: "{'items': **'**" + $.toJSON(items) + "**'**}",
success: function(data) {
if(false != data.d) {
alert('we did it');
} else {
alert ('flop');
}
},
error: function() {
alert('Failed to save Program Items');
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.