ASP.NET MVC przesylanie danych

0

Witam,

Mam mały problem. Otuż mam taki kawalek kodu w kontrolerze:

private ProductManager pm = new ProductManager();
private PointOfSaleContext db = new PointOfSaleContext();

public ActionResult Detail(SearchProduct productCode)
{
if (!ModelState.IsValid)
{
return RedirectToAction("Index", "Home");
}
else
{
//szukam produktu w bazie danych
var searchingProduct = db.Products.Where(p => p.ProductId == productCode.Code).Single();
int id = searchingProduct.ProductId;

            //przypisuje go do modelu
            SingleProduct product = new SingleProduct();
            product.product = searchingProduct;

           //id produktu przesylam do metody, ktora dodaje go do listy produktów
            pm.AddToList(id);
            return View(product); //wysylam do widoku
        }
    }

    public ActionResult List()
   {
        //obiekt modelu
       AllItems all = new AllItems();

      //przypisanie do ICollecion<Product> z modelu listy, ktora jest w ProductManager
       all.productList = pm.list;
       return View(all);
   }

Tu jest klasa ProductManager:

public class ProductManager
{
private PointOfSaleContext db = new PointOfSaleContext();
public List<Product> list;

    public ProductManager()
    { 
        list = new List<Product>();
       
    }
    public void AddToList(int id) //dodaje do listy produktow
    {
        var product = db.Products.Where(p => p.ProductId == id).SingleOrDefault();
        list.Add(product);

    }        
}

Problem polega na tym, ze jak probuje odczytac dane w widoku AddToList, ktory jest wywolany na koncu szlaku, to okazuje się, ze lista w ProductManagerze jest pusta i nie wiem czemu tak sie dzieje.

2

Po pierwsze używaj znaczników kolorujących składnie, o wiele lepiej się to czyta wtedy.

Z każdym requestem tworzony jest nowy obiekt ProductManager. Czyli jak najpierw wywołujesz akcje Detail dodajesz coś tam do tej listy ale nigdzie tego nie zapisujesz, później w akcji List masz już nowy obiekt ProductManager więc lista jest pusta. Zapisz ten produkt w bazie i dopiero stamtąd go pobierz w List

0

Dzięki za pomoc i przepraszam za brak kolorowania

1 użytkowników online, w tym zalogowanych: 0, gości: 1