首页 > 解决方案 > ASP.NET C#,将对象返回给 Angular

问题描述

我正在为 Angular 前端编写 C# api 后端。我以前在其他项目中这样做过,以前我总是从 c# 返回一个对象,而在邮递员或 Angular 中我能够读取该对象。在邮递员中,它被整齐地格式化为 json。

例如,我曾经有一个class Person和一个控制器PersonController。在PersonController,我可以有一个方法Get(),Get 会是这样的

public Person Get() {
    Person p = new Person();
    ...
    return p;
}

我应该PersonController.Get从 Angular 打电话,我会得到这个人。但是由于某种原因,现在我在一个新项目中这样做,而我得到的只是[Person]——而不是可扩展的 json。

为什么是这样?

我知道我看到了差异。开发人员花时间将其作为字符串返回:

JavaScriptSerializer json = new JavaScriptSerializer()
            {
                MaxJsonLength = 3000;
            };
strJson = json.Serialize(model);
return strJson;

但我想返回实际对象。我发现解析它使它慢得多。

编辑:

这是我的实际控制器:

 public class PersonController : Controller
 {
        private readonly IPersonService personService;

        public PersonController()
        {
            presonService =  new PersonService();
        }

        public async Task<JArray> Get(int? id)
        {
            var model = await personService.GetInfo(id, ConnHelper.ConnectionString());
            JArray a = (JArray)JToken.FromObject(model);
            return a;
            //return model;
        }

        public async Task<List<Person>> GetObject(int? id)
        {
                var model = await personService.GetInfo(id, ConnHelper.ConnectionString());                
                return model;
        }
}

标签: c#asp.netjsonangular

解决方案


因为您的控制器是普通控制器,您应该返回 Json,如下所示:

public class PersonController : Controller
{
    private readonly IPersonService personService;

    public PersonController()
    {
        presonService =  new PersonService();
    }


    public async Task<JArray> Get(int? id)
    {
        var model = await personService.GetInfo(id, ConnHelper.ConnectionString());
        JArray a = (JArray)JToken.FromObject(model);
        return Json(a);
        //return model;
    }




public async Task<List<Person>> GetObject(int? id)
            {
                var model = await personService.GetInfo(id, ConnHelper.ConnectionString());                
                return Json(model);
            }
        }

推荐阅读