从db调用返回.net Web Api的结果

时间:2015-09-27 17:09:11

标签: asp.net-mvc entity-framework asp.net-web-api2

我是.net Web API的新手,我正在试图弄清楚如何通过调用我的数据库返回Get结果。我知道一切都在我的常规MVC页面中有效。但不确定如何从Web API控制器返回结果。我认为这就像用结果返回Json一样简单。这是我的代码:

    // GET api/<controller>
    public IEnumerable<string> Get()

    {

        using (var _db = new JobsDatabaseEntities())
        {
            var user = Env.CurrentUser;
            var posts =
                _db.JobPostings.Where(
                    j =>
                        j.City.Equals(user.City, StringComparison.OrdinalIgnoreCase) &&
                        j.Industry.ID == user.Industry.ID);
            var result = new List<BusJobPost>();

            foreach (var post in posts)
            {
                var p = new BusJobPost(post);
                result.Add(p);
            }

            return Json(result);
        }

    }

1 个答案:

答案 0 :(得分:0)

请访问此资源:Action Results in Web API 2
您的案例在第四部分其他类型中描述(也适用于第一版Web API)。

在Web API中,您不会显式返回JSON结果。它实际上是由名为内容协商的过程完成的。您可以详细了解here [Content Negotiation in ASP.NET Web API]

简要介绍其中的一部分:

  • 您可以为您的请求设置Accept标头:Accept: application/json(例如,如果您使用jquery ajax函数:dataType: 'json'
  • 或者即使您根本不使用Accept标头,如果您使用JSON数据发送请求,您也应该以JSON格式获得响应

因此,您应该从控制器操作返回result变量,并满足一些条件以将响应序列化为JSON。