2

次のようなことが実行されるコントローラーへの呼び出しがあります。

someObject.Name = "Mike";

JsonResult result = Json(new { TheMan = someObject }, JsonRequestBehavior.AllowGet);

someObject.Name = "Paul";

return result;

問題は、クライアントがデータを受け取るとき、結果の JSON が「Mike」で作成されると予想していたときに、名前が「Paul」になっていることです。

ドキュメントには、「このメソッドによって準備された結果オブジェクトは、オブジェクトの実行時に ASP.NET MVC フレームワークによって応答に書き込まれます」と書かれています。

応答の変更を心配することなく、JSON データで使用されるオブジェクトを操作できる回避策はありますか? (someObject か何かのクローン)

ありがとう。

4

1 に答える 1

3

あなたはほとんどそれを言った。Json オブジェクトを作成するときは、参照を追加するだけなsomeObjectので、値を変更すると、Json オブジェクト内でも変更されます。アクションによって JsonResult が返されるまで、Json は実際には応答に書き込まれません。元の値に影響を与えずに値を別のものに設定したい場合は、オブジェクトの別のコピーが必要になります。

于 2013-08-20T15:12:51.227 に答える