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