• 1399/05/14

افزودن گروه به محصول در asp.net core mvc :

سلام استاد .

چطوری میشه که گروه هایی که توی razor page  به محصول اضافه کردید رو توی mvc درست کردو

من تا یه جاهایش رو روفتم ولی error null refrence گرفتم تو قسمت edit ولی add سالم کار کرد

 

[HttpGet]
        public IActionResult Edit(int id)
        {
            var product = _context.Products.Include(p => p.Item)
                .Where(p => p.Id == id)
                .Select(s => new AddEditProductViewModel()
                {
                    Id = s.Id,
                    Name = s.Name,
                    Description = s.Description,
                    QuantityInStock = s.Item.QuantityInStock,
                    Price = s.Item.Price,
                    Categories = _context.Categories.ToList(),
                    GoupsProduct = _context.CategoryToProducts.Where(c => c.ProductId == id)
                        .Select(s => s.CategoryId).ToList()
                }).FirstOrDefault();

            return View(product);
        }
        [HttpPost] 
        public IActionResult Edit(AddEditProductViewModel Product,)
        {
            Product.Categories = _context.Categories.ToList();
            foreach (var gr in GoupsProduct)
            {
                Product.GoupsProduct.Add(gr);
            }
            if (!ModelState.IsValid)
            {
                return View(Product);
            }

            var product = _context.Products.Find(Product.Id);
            var item = _context.Items.First(p => p.Id == product.ItemId);
            product.Name = Product.Name;
            product.Description = Product.Description;
            item.Price = Product.Price;
            item.QuantityInStock = Product.QuantityInStock;
            _context.SaveChanges();
            if (Product.Picture?.Length > 0)
            {
                string filePath = Path.Combine(Directory.GetCurrentDirectory(),
                    "wwwroot",
                    "images",
                    product.Id + Path.GetExtension(Product.Picture.FileName));
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    Product.Picture.CopyTo(stream);
                }
            }
            _context.CategoryToProducts.Where(c=>c.ProductId == Product.Id).ToList()
                .ForEach(g=>_context.CategoryToProducts.Remove(g));

            if (Product.SelectedGroups.Any() && Product.SelectedGroups.Count > 0)
            {
                foreach (var gr in Product.SelectedGroups)
                {
                    _context.CategoryToProducts.Add(new CategoryToProduct()
                    {
                        CategoryId = gr,
                        ProductId = Product.Id
                    });
                }

                _context.SaveChanges();
            }

            return View("Index");
        }
  • 1399/05/14
  • ساعت 13:59

سلام

لیست بعنوان ورودی برای اکشن ارسال کنید 


  • 1399/05/14
  • ساعت 14:01

یعنی برای ورودی  action list int بزارم


  • 1399/05/14
  • ساعت 15:00

بله


logo-samandehi