1

ASP.NET Hiddenフィールドコントロールを使用して、JavaScriptで単一アイテムのデータ値を生成し、ポストバック時に値をサーバーに送り返すことができます。

私の新しい問題は、ブラウザクライアントで完全に作成および編集されたアイテムの全リストがあることです。コントロール自体はASP.NETコントロールではありません。(私は剣道リストビューを使用しています)。

このデータを送り返すにはどうすればよいですか?

javascriptはローカルデータソースを何らかの方法でDOMにエンコードする必要があり、サーバーコードは何らかの方法で値を抽出すると想定しています。

私が考えることができる唯一の「どういうわけか」は、すべての値を1つの文字列にシリアル化し、それを非表示フィールド値として設定することです。

javascriptを使用して値をシリアル化し、C#を使用してこれらを逆シリアル化することは確かに実行可能ですが、少し「手動」のようです。手動のシリアル化を伴わない、より簡単な方法があるかどうか疑問に思います。DOMに書き込むための何らかの方法で、ASP.NETバインディング機能によって取得されます。

この問題の場合、データは次の形式になります。

[
   {
      sequenceNumber : 1,
      mediaFileId: 3
    },
    {
       sequenceNumber : 2,
       mediaFileId: 28
    },
    {
       sequenceNumber : 3,
       mediaFileId:  32
    }
]

sequenceNumberは冗長であると主張することもできますが、将来的には新しいフィールドを追加する予定なので、マルチフィールドデータオブジェクトに対応するソリューションを見つけるのが最善です。


投稿全体をAJAX呼び出しに置き換えることができることはわかっていますが、現時点では、既存のページに大きな変更を加えることはできません。

4

2 に答える 2

2

ASP.NET バインディング機能によって取得される DOM に書き込む何らかの方法。

あなたが何を意味しているのかわかりません.ASP.NETサーバーコントロールがなければ、ポストバックで値を取得するものは何もありません. サーバー コントロールは、ViewState の非表示フィールドを使用してこのデータを格納しますが、クライアントから項目を追加または更新することは現実的ではありません。

JSON 形式のデータが既にあるので、それを に入れHiddenFieldValue、C# 側で JSON デシリアライザーを使用して POCO に戻します。

JavaScriptSerializer、、、DataContractJsonSerializerまたはJSON.NETすべて、C# の逆シリアル化ルーチンで、多くの手作業を行わなくても機能するはずです。

于 2012-05-29T01:11:55.820 に答える
1

アクションが破壊的な場合は を使用しpost、そうでない場合は を使用しますget

データ形式については、お勧めしjsonます。

json.net と c#dynamicexpendoを使用すると、ページをあまり変更せずに簡単に操作できます。

于 2012-05-29T00:49:08.963 に答える