在ajax中返回具有倍数属性的对象

时间:2017-03-01 14:18:56

标签: javascript c# ajax

我创建了对象并添加了一些属性:

dynamic oReturn = new ExpandoObject();
oReturn.Name = name;
oReturn.Editing = editing;
oReturn.Img = img;
...
return oReturn;

但是当我将对象返回到我的前端时,我有三个对象,每个对象都有一个键和一个值,而不是一个具有所有属性的对象。

这是我在控制台中的输出:

m.d[0];
Object {Key: "Name", Value: "Test"}
m.d[1];
Object {Key: "Editing", Value: "177f734c-2a69-4b81-a14c-164ab9ff6704"}
m.d[2];
Object {Key: "Img", Value: ""}

如何只返回一个具有所有三个属性的对象?

2 个答案:

答案 0 :(得分:1)

使用带有JsonConvert类的Newtonsoft库。然后,您可以在返回之前使用它来序列化对象。

dynamic oReturn = new ExpandoObject();
oReturn.Name = name;
oReturn.Editing = editing;
oReturn.Img = img;

var json = JsonConvert.SerializeObject(oReturn );
return json;

请注意,如果您正在使用ASP.NET MVC,那么您也可以使用Content-method返回,如下所示:

dynamic oReturn = new ExpandoObject();
oReturn.Name = name;
oReturn.Editing = editing;
oReturn.Img = img;

var json = JsonConvert.SerializeObject(oReturn );
return Content(json, "application/json");

一旦收到你的前端,输出就会如下所示:

{"Name":"DataA","Editing":"DataB", "Img":"DataC"}

答案 1 :(得分:0)

这应该有效:

dynamic oReturn = new ExpandoObject();
oReturn.Data = new ExpandoObject();
oReturn.Data.Name = name;
oReturn.Data.Editing = editing;
oReturn.Data.Img = img;
...
return oReturn;

比这样的事情应该做的伎俩

return new {Name= name, Editing = editing, Img = img};