我是编写WEB API的新手(使用VS 2013),我试图获得一个存储过程来返回JSON中的结果。我找到了使用HTML进行显示的示例,但我无法通过它发送JSON。我正在使用该示例,我看到的错误是“名称'视图'在当前上下文中不存在”。我通常使用留言板很好地处理问题(我觉得我很接近),但我似乎无法让这成功。数据来自sproc,但我不知道如何返回它。这是我的第一篇文章,如果答案显而易见,请原谅我。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using TRYiT.Models;
namespace TRYiT.Controllers
{
public class TRYiTController : ApiController
{
TRYiTEntities _db = new TRYiTEntities();
public IEnumerable<InfoModel> Get()
{
var studentercord = _db.Student_sp().ToList();
InfoModel objmodel = new InfoModel();
objmodel.infoData = new List<info>();
foreach (var item in studentercord.ToList())
{
objmodel.infoData.Add(new info { StudentID = item.StudentID,
LastName = item.LastName,
FirstName = item.FirstName,
EnrollmentDate = item.EnrollmentDate,
MiddleName = item.MiddleName });
}
return view(objmodel);
}
}
}
答案 0 :(得分:2)
我希望,你正在寻找这个。
public IEnumerable<info> Get()
{
var studentercord = _db.Student_sp().ToList();
IEnumerable<info> data = (from item in studentercord
select new info
{
StudentID = item.StudentID,
LastName = item.LastName,
FirstName = item.FirstName,
EnrollmentDate = item.EnrollmentDate,
MiddleName = item.MiddleName
}).ToList();
return data;
}
注意:我已将返回类型更改为info,因为我无法看到IEnumerable<InfoModel>
无法从此处返回,而是使用{{1} }。因此,如果您觉得它是正确的,请继续进行更改。
如您所见,返回类型为IEnumerable<info>
,因此您无需返回IEnumerable<T>
。在webapi中,您需要返回IEnumerable,这样当您执行View
请求时,您将获得数据列表(对于此示例)。但对于Get
,您必须在调用MVC
时返回View
,而controller
返回类型则不是这样。
所以假设,这是托管在&#34; http://www.example.com&#34;并且路由定义为&#34; api / {controller}&#34;,您需要点击WebApi
以获取数据列表。
答案 1 :(得分:0)
我宁愿做类似
的事情public HttpResponseMessage Get()
{
var studentercord = _db.Student_sp().ToList();
InfoModel objmodel = new InfoModel();
objmodel.infoData = new List<info>();
foreach (var item in studentercord.ToList())
{
objmodel.infoData.Add(new info { StudentID = item.StudentID,
LastName = item.LastName,
FirstName = item.FirstName,
EnrollmentDate = item.EnrollmentDate,
MiddleName = item.MiddleName });
}
return Request.CreateResponse(HttpStatusCode.OK, objmodel.infoData);
//or return Request.CreateResponse(HttpStatusCode.OK, objmodel);
//depending what your client expects...
}