【发布时间】:2020-12-28 09:25:40
【问题描述】:
如何从 MVC 控制器操作方法调用 Web API 方法?
这是我正在尝试的,这是我的控制器方法:
public ActionResult ProductDetail(long id)
{
using (var client = new HttpClient())
{
var productDetailUrl = Url.RouteUrl(
"DefaultApi",
new { httproute = "", controller = "ProductDetails", id = id },
Request.Url.Scheme
);
var model = client
.GetAsync(productDetailUrl)
.Result
.Content.ReadAsAsync<ProductItems>().Result;
return View(model);
}
}
我的 Web API 方法:
private ProductEntities products = new ProductEntities();
public IEnumerable<ProductItems> GetProductDetail(int ID)
{
var produc = products.ExecuteStoreQuery<ProductItems>(
"GetProductDetail @ProductID ",
new SqlParameter("@ProductID", ID));
return produc;
}
当我这样做时,我在返回数据后在我的 MVC 操作方法中收到错误 @var model,说:
"
Newtonsoft.Json.JsonSerializationException: 无法反序列化 JSON 数组“(即[1,2,3])转换为类型'ProductDetails.Models.ProductItems'。 反序列化的类型必须是数组或实现集合 像IEnumerable、ICollection或IList这样的接口。强制 JSON 数组 要反序列化,请将JsonArrayAttribute添加到类型中。 1号线, 位置 1。”
谁能帮我做这件事,建议另一种更好的方法,或者如果我在任何地方做错了,可以纠正我吗?我必须在我的视图中显示返回的数据,数据应该返回到我的控制器。
【问题讨论】:
-
我会使用 ProductItem 而不是 ProductItems 作为类/对象名称。恕我直言,使用“var”字会阻碍这些问题的解决。
标签: json asp.net-mvc-4 asp.net-web-api json.net