Web API赢得';t使用存储过程返回JSON
本文关键字:存储过程 返回 JSON API 赢得 Web | 更新日期: 2023-09-27 18:27:05
我是编写WEB API(使用VS 2013)的新手,我曾尝试过使用存储过程以JSON形式返回结果。我已经找到了使用HTML进行显示的例子,但我无法让它发送JSON。我正在处理这个例子,我看到的错误是"名称'view'在当前上下文中不存在"。我通常使用留言板很好地解决问题(我觉得我很接近),但我似乎无法成功。存储过程中有数据,但我不知道如何返回。这是我的第一篇文章,所以如果答案很明显,请原谅我。
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);
}
}
}
我希望,您正在寻找这个。
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>
不能从这里返回,而是使用IEnumerable<info>
是有意义的。所以,如果你觉得这是正确的,那就去做改变吧。
因为,正如您所看到的,返回类型是IEnumerable<T>
,所以您不必返回View
。在webapi中,您需要返回IEnumerable,这样当您执行Get
请求时,您将获得数据列表(对于本例)。但对于MVC
,在调用controller
时必须返回View
,而WebApi
的返回类型则不是这样。
因此,假设这是托管在"http://www.example.com并且路由定义为"api/{controller}",您需要点击"http://www.example.com/api/TRYiT"
才能获得数据列表。
我宁愿做一些类似的事情
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...
}