2

有一个调用我的控制器执行这样的事情:

someObject.Name = "Mike";

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

someObject.Name = "Paul";

return result;

问题是当客户端收到数据时,名称是“Paul”,而我期望结果 JSON 是用“Mike”创建的。

文档中它说“当执行对象时,由该方法准备的结果对象由 ASP.NET MVC 框架写入响应。”

是否有一种解决方法,我可以在不担心更改响应的情况下操作 JSON 数据上使用的对象?(克隆 someObject 什么的)

谢谢。

4

1 回答 1

3

你说的差不多。当您创建 Json 对象时,您只需添加一个引用,someObject因此如果您更改值,它也会在 Json 对象内部发生更改。在操作返回 JsonResult 之前,Json 不会实际写入响应。如果您想将值设置为其他值而不影响原始值,您将需要该对象的另一个副本。

于 2013-08-20T15:12:51.227 回答