¿Cómo puedo llamar a un método WebApi desde MVC Controller Action Method?
¿Cómo puedo llamar a un método de API web desde un método de controlador de acción MVC. Esto es lo que estoy tratando, este es mi método de controlador:
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);
}
}
Mi método de API web:
private ProductEntities products = new ProductEntities();
public IEnumerable<ProductItems> GetProductDetail(int ID)
{
var produc= products.ExecuteStoreQuery<ProductItems>(
"GetProductDetail @ProductID ",
new SqlParameter("@ProductID", ID));
return produc;
}
Cuando hago esto, aparece un modelo de error @ var en mi método de acción MVC después de devolver los datos que dicen
"Newtonsoft.Json.JsonSerializationException: No se puede deserializar la matriz JSON" (es decir, [1,2,3]) en el tipo 'ProductDetails.Models.ProductItems'. El tipo deserializado debe ser una matriz o implementar una interfaz de colección como IEnumerable, ICollection o IList. Para obligar a las matrices JSON a deserializar, agregue el atributo JsonArray al tipo. Línea 1, posición 1. "
¿Puede alguien ayudarme a hacer esto ... o sugerirme otro mejor método o corregirme si estoy haciendo algo mal en cualquier lugar ... Tengo que mostrar los datos devueltos en mi vista ... los datos deberían devolverse a mi controlador