3

状況は次のとおりです。入力コントロールを含むテーブルを反復処理し、値を収集してから 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を使用してサーバーにポストバックしています。

ここで何が間違っていますか?

4

3 に答える 3

2

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) {...}
于 2009-05-16T04:59:19.460 に答える
1

私は問題が何であるかを理解しました。配列を呼び出しの一部として送信する前に引用符で囲んでいた$.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');
    }
}); 
于 2009-05-16T05:14:46.317 に答える
0

@Jared 渡されたオブジェクトは JSON 配列です。json Sharpを使用して、サーバー側で処理できます。これは、 json配列を C# に変換することに関する素敵な投稿です。

于 2009-05-16T04:54:13.200 に答える