如何从 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;
}
当我这样做时var model
,我在返回数据后在我的 MVC 操作方法中收到一个错误@,说:
"
Newtonsoft.Json.JsonSerializationException
: 无法将 JSON 数组 "(ie[1,2,3]
) 反序列化为类型 'ProductDetails.Models.ProductItems
'。反序列化的类型必须是数组或实现集合接口,如IEnumerable
,ICollection
或IList
。要强制 JSON 数组反序列化JsonArrayAttribute
,请在类型中添加 。第 1 行,位置 1。”
任何人都可以帮我这样做,建议另一种更好的方法,或者如果我在任何地方做错了,可以纠正我吗?我必须在我的视图中显示返回的数据,数据应该返回到我的控制器。