• 1399/05/11

ذخیره چند عکس :

باسلام خدمت شما استاد مدائنی عزیز

استاد من برای محصولات باید امکانی ایجاد کنم که چند تا عکس رو بتونم برای محصول ایجاد کنم

مدلی رو برای این کار در نظر گرفتم و تو سرویس به این شکل نوشتم:

        public void AddProduct(Product product, IFormFile imgProduct, List<IFormFile> productImages)
        {
            product.ImageName = "no-photo.png";

            if (imgProduct.IsImage() &amp;&amp; imgProduct != null)
            {
                string imageName = product.ImageName;
                AddImageProduct(ref imageName, imgProduct);
                product.ImageName = imageName;
            }

            AddListImageToProduct(productImages,product);

            _context.Products.Add(product);
            _context.SaveChanges();
        }

و

        public void AddListImageToProduct(List<IFormFile> productImages, Product product)
        {
            if (productImages != null)
            {
                foreach (IFormFile image in productImages)
                {
                    if (image.IsImage())
                    {
                        var productImage = new ProductImage();

                        string imageName = productImage.Images;
                        AddImageProduct(ref imageName, image);

                        productImage.Images = imageName;
                        productImage.ProductId = product.Id;
                        productImage.Product = product;

                        _context.ProductImages.Add(productImage);
                    }

                }
            }
        }

1-استاد من درست انجام دادم؟(اگر اشتباهه لطفا راهنمایی کنید)

2- ایا درسته که مدل پروداکت ایمیج رو اینجا مقدار دهی کردم یا باید در ویو مدل قرارش می دادم و همونجا پرش می کردم؟

3- استاد چرا متد AddListImageToProduct  ، productImage.Images را به عنوان پارامتر نمی پذیرد و در صورتی که در یک متغیر دیگه ریخته شود می پذیرد؟

استاد ببخشید چون دارم سرویس ها رو می نویسم و قالب هم اماده نیست که بتونم تست بکنم و اگر اشتباه کنم کارم سخت میشه

ممنون

  • 1399/05/11
  • ساعت 07:06

سلام 

بله درسته 

 


  • 1399/05/11
  • ساعت 07:07

سلام ممنون

میشه جواب سوال سوم رو هم بدین؟


  • 1399/05/11
  • ساعت 07:13

منظروتون رو متوجه نشدم 

بیشتر توضیح دهید 


  • 1399/05/11
  • ساعت 07:16

اگر من در متد AddListImageToProduct  ، productImage.Images را به عنوان  پارامتر بفرستم خطا میده

اما الان که مقدارش رو تو متغیر imageName  ریختم و اون رو پاس دادم خطا نمیده


  • 1399/05/11
  • ساعت 07:21
            if (imgProduct.IsImage() &amp;&amp; imgProduct != null)
            {
                string imageName = product.ImageName;
                AddImageProduct(ref imageName, imgProduct);
                product.ImageName = imageName;
            }

اینجا من اومدم از یک متغیر دیگه استفاده کردم

اگر مستقیما product.ImageName را به متد بدم ارور میده


  • 1399/05/11
  • ساعت 08:31

متن ارور ؟


  • 1399/05/11
  • ساعت 08:37

Error CS0206 A property or indexer may not be passed as an out or ref parameter 

 


  • 1399/05/11
  • ساعت 09:18

چرا ref ؟

لطفا کامل توضیح بدید چرا از ref استفاده کردید 


  • 1399/05/11
  • ساعت 15:44

سلام استاد

چون می خواستم فیلد نام عکس هم مقدارش تغییر کنه وقتی نام عکس رو می سازم درونش ذخیره بشه

public void AddImageProduct(ref string imageName, IFormFile imgProduct)
        {
            imageName = NameGenerator.GenerateUniqCode() + Path.GetExtension(imgProduct.FileName);

            string imagePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/Images/Products/Image",
                imageName);
            string thumbnailPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/Images/Products/Thumbnail",
                imageName);

            using (var stream = new FileStream(imagePath, FileMode.Create))
            {
                imgProduct.CopyTo(stream);
            }
            new ImageConvertor().Image_resize(imagePath, thumbnailPath, 200);
        }

ممنون بابت پاسخگوییتون 


  • 1399/05/11
  • ساعت 15:46

متن ارور رو بدید به مترجم گوگل 


  • 1399/05/11
  • ساعت 15:47

چشم استاد ببخشید وقتتون رو گزفتم ممنون


logo-samandehi