¿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, esta es mi método de control:¿Cómo puedo llamar a un método de WebApi desde el Método de acción MVC Controller?
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 estoy haciendo esto que estoy recibiendo un modelo var @ error en mi método de acción MVC después de devolver los datos diciendo
"Newtonsoft.Json.JsonSerializationException: no se puede deserializar JSON array" (es decir, [1,2,3]) en 'ProductDetails.Models.ProductItems' de tipo. El tipo deserializado debe ser una matriz o implementar una interfaz de recopilación como IEnumerable, ICollection o IList. Para forzar las matrices JSON para deserializar, agregue JsonArrayAttribute al tipo. Línea 1, posición 1."
Puede cualquiera que me ayude a hacer esto ... o me sugieren cualquier otro método o mejor me corrija si estoy haciendo mal en cualquier lugar ... he vuelto a mostrar la datos en mi opinión ... los datos deberían devolverse a mi controlador
Usaría ProductItem en lugar de ProductItems para el nombre de clase/objeto. Y el uso de la palabra "var" dificulta este tipo de problemas, en mi humilde opinión. – granadaCoder