The fact is that I am developing an online store in ASP.NET MVC, the fact is that when I want to add an item to the basket I get this error:
Object reference not set as an instance of an object.
And I get it in this part of the code:
public void AddToBasket(HttpContextBase httpContext, string productId ){
Basket basket = GetBasket(httpContext, true);
//Justo aqui debajo
BasketItem item = basket.BasketItems.FirstOrDefault(i => i.ProductId == productId);
//El de arriba
if (item == null){
I know the answer is to put something in somewhere but I do not get anything. Besides, I'm supposed to do it before in this method:
private Basket CreateNewBasket (HttpContextBase httpContext) {
Basket basket = new Basket();
basketContext.Insert(basket);
basketContext.Commit();
HttpCookie cookie = new HttpCookie(BasketSessionName);
cookie.Value = basket.Id;
cookie.Expires = DateTime.Now.AddDays(1);
httpContext.Response.Cookies.Add(cookie);
return basket;
}
In any case, for more information, this is the complete method:
public void AddToBasket (HttpContextBase httpContext, string productId) {
Basket basket = GetBasket (httpContext, true);
BasketItem item = basket.BasketItems.FirstOrDefault(i => i.ProductId == productId);
if (item == null)
{
item = new BasketItem()
{
BasketId = basket.Id,
ProductId = productId,
Quanity = 1
};
basket.BasketItems.Add(item);
}
else {
//item.BasketId = bas;
//item.ProductId = prroductId;
item.Quanity = item.Quanity + 1;
}
basketContext.Commit();
}
I imagine you will need more data so, for example, you can see GetBasket which refers to the following method:
private Basket GetBasket (HttpContextBase httpContext, bool createIfNull) {
HttpCookie cookie = httpContext.Request.Cookies.Get(BasketSessionName);
Basket basket = new Basket();
if (cookie != null)
{
string basketId = cookie.Value;
if (!string.IsNullOrEmpty(basketId))
{
basket = basketContext.Find(basketId);
}
else
{
if (createIfNull)
{
basket = CreateNewBasket(httpContext);
}
}
}
else {
if (createIfNull)
{
basket = CreateNewBasket(httpContext);
}
}
return basket;
}
And the class that is supposed to store this data are: Basket:
public class Basket: BaseEntity { public virtual ICollection BasketItems {get; set; }
public Basket() {
this.BasketItems = new List<BasketItem>();
}
}
And the basketItem
public class BasketItem: BaseEntity
{
public string BasketId { get; set; }
public string ProductId { get; set; }
public int Quanity { get; set; }
}
The truth is that I do not know what's wrong, thank you very much for your time