如何从 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个位置。"
有没有人能帮我解决这个问题,建议另一种更好的方法,或者纠正我在任何地方做错了?我必须在我的视图中显示返回的数据,数据应该返回到我的控制器。