簡體   English   中英

將 JavaScript 對象數組傳遞給 PageMethod

[英]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');
    }
}); 

@Jared 傳遞的對象是一個 JSON 數組。 您可以使用jsonSharp在服務器端處理它。 是一篇關於將 json 數組轉換為 C# 的好文章。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM