Мой метод AddtoCart в приложении MVC ShoppingCart возвращает значение Null при получении сведений о продукте от TescoLabsApi: - PullRequest
0 голосов
/ 06 ноября 2018

Когда я получаю информацию о продукте от TescoLabs Api, мой метод возвращает ноль, когда я вызываю метод AddtoCart:

Мой метод MakeRequest ниже показывает этот экран :

public async Task<ActionResult> MakeRequest(string q)
{
    System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

    var client = new HttpClient();
    client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "api key ");

    var uri = string.Format("https://dev.tescolabs.com/grocery/products/?query={0}&offset={1}&limit={2}", q, 0, 100);

    var response = await client.GetAsync(uri);
    string body = await response.Content.ReadAsStringAsync();
    var result = JObject.Parse(body);

    IList<JToken> results = result["uk"]["ghs"]["products"]["results"].Children().ToList();

    //// serialize JSON results into .NET objects
    IList<Product> products = new List<Product>();
    foreach (JToken r in results)
    {
        // JToken.ToObject is a helper method that uses JsonSerializer internally
        Product product = r.ToObject<Product>();
        products.Add(product);
    }
    return View(products);  

У меня есть метод AddToCart:

public void AddToCart(Product Product)
{
    var cartItem = listDB.Carts.SingleOrDefault(c => c.CartId == ShoppingCartId && c.Id == Product.ID);
    if (cartItem == null)
    {
        cartItem = new Cart
        {
            Id = Product.ID,
            CartId = ShoppingCartId,
            Count = 1,
            DateCreated = DateTime.Now
        };
        listDB.Carts.Add(cartItem);
    }
    else {
        cartItem.Count++;
    }
    listDB.SaveChanges();

}

это мой ShoppingCartController с методом ActionResult:

public ActionResult AddToCart(string name)
{
    var addedProduct = listDB.products.FirstOrDefault(product => product.Name == name);
    var cart = ShoppingCart.GetCart(this.HttpContext);
    cart.AddToCart(addedProduct);
    return RedirectToAction("Index");
}

, но по какой-то причине, когда я нажимаю кнопку Добавить, появляется исключение ниже:

System.Reflection.TargetException was unhandled by user code
  HResult=-2146232829
  Message=Non-static method requires a target.
  Source=mscorlib

информация о продукте возвращается null исключение времени выполнения

Как я могу изменить свой метод AddToCart, чтобы получать информацию о продукте от TescoLabsApi, а затем добавить его в корзину?

1 Ответ

0 голосов
/ 12 ноября 2018

Я думаю, что это может быть где-то не так.

var cart = ShoppingCart.GetCart(this.HttpContext);

Каково значение ссылки ShoppingCart - где она определена?

...