c# - 从 TescoLabsApi 接收产品详细信息时,我的 MVC ShoppingCart 应用程序中的 AddtoCart 方法返回 Null:
问题描述
当我从 TescoLabs Api 获取产品信息时,当我调用 AddtoCart 方法时,我的方法返回 null:
下面我的 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();
}
这是我的带有 ActionResult 方法的 ShoppingCartController:
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
产品信息返回空运行时异常
我如何修改我的AddToCart
方法来接收产品信息TescoLabsApi
然后添加到我的购物车?
解决方案
我认为这可能是它出错的地方。
var cart = ShoppingCart.GetCart(this.HttpContext);
ShoppingCart 参考的价值是什么 - 它在哪里定义?
推荐阅读
- jenkins - Jenkinsfile 访问 aws 凭据
- python - 为什么我的代码无视我的条件?
- java - 单击 div 中的提交按钮不会将属性显示设置为无
- python - 根据条件计算数据框中的正负连续元素
- cmake - 如何在cmake中转义$?
- regex - 重写规则重定向子文件夹
- azure - 在 Azure Pipeline 中处理 HTTP 对象的不记名令牌
- reactjs - 如何使用 React Hooks 清除单击时的Interval?
- bash - Bash one-liner for "if a file exists, read it into variable, else empty string"?
- php - 教义查询:创建连接三个表的选择查询的最佳方法?