【发布时间】:2016-10-27 12:25:41
【问题描述】:
我正在尝试使用 Web API 从我的 MVC 控制器中获取某些字段。我似乎无法将正确的类型与正确的列表相匹配。我可以将所有内容都转换为字符串。
我得到一个代码错误(无法转换类型),或者如果我让它编译,我得到这个错误:
"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/xml; charset=utf-8'."
从其他类似的帖子中,人们回复了如何创建列表,但没有声明 Get 的返回值。请同时包含两者。
此外,我不希望添加额外的控制器,因为我需要在我的许多模型上执行此操作。
这是我的代码——注意你可以看到我尝试了许多不同的方法:
public class APICLIENTsController : ApiController
{
private ApplicationDbContext db = new ApplicationDbContext();
// GET api/<controller>
public IEnumerable<string> Get()
//public IEnumerable<CLIENT> Get()
{
//return db.CLIENTs.OrderBy(x => x.CLIENTNAME).ToList();
string[] listOfUsers = db.CLIENTs.OrderBy(x => x.CLIENTNAME).Select(r => new
{
ID = r.CLIENTID.ToString(),
NAME = r.CLIENTNAME
});
return listOfUsers.ToList();
//return db.CLIENTs.Select(x => new { x.CLIENTNAME }).ToArray();
}
【问题讨论】:
-
您的查询正在创建一个匿名对象的集合(具有 2 个属性
ID和NAME)而不是string的数组 -
那么我该如何解决?我从一个 iqueryable 模型开始,我不介意将它转换为我可以从这个 api 中提取的任何东西。
-
不清楚你真正想要返回什么。如果要返回对象集合,请创建一个视图模型(例如
class Item和int ID和string Name)并使用IEnumerable<Item> listOfUsers = db.CLIENTs.OrderBy)..).Select(r => new Item { ID = r.CLIENTID, Name = r,CLIENTNAME)}; return listOfUsers;并创建方法public IEnumerable<Item> Get() -
我有很多这样的 api 调用要进行,所以我不想创建 20 个视图模型。我只想用最简单的方法把它传给 Json。如果我可以在函数中做到这一点,我可以将所有内容都转换为字符串(但我不知道如何)。
-
我看不出
string[]能如何帮助您。您如何使用这些数据?
标签: json asp.net-mvc asp.net-web-api2