باسلام خدمت شما استاد مدائنی عزیز
استاد من برای محصولات باید امکانی ایجاد کنم که چند تا عکس رو بتونم برای محصول ایجاد کنم
مدلی رو برای این کار در نظر گرفتم و تو سرویس به این شکل نوشتم:
public void AddProduct(Product product, IFormFile imgProduct, List<IFormFile> productImages)
{
product.ImageName = "no-photo.png";
if (imgProduct.IsImage() && 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 را به عنوان پارامتر نمی پذیرد و در صورتی که در یک متغیر دیگه ریخته شود می پذیرد؟
استاد ببخشید چون دارم سرویس ها رو می نویسم و قالب هم اماده نیست که بتونم تست بکنم و اگر اشتباه کنم کارم سخت میشه
ممنون
سلام
بله درسته
سلام ممنون
میشه جواب سوال سوم رو هم بدین؟
منظروتون رو متوجه نشدم
بیشتر توضیح دهید
اگر من در متد AddListImageToProduct ، productImage.Images را به عنوان پارامتر بفرستم خطا میده
اما الان که مقدارش رو تو متغیر imageName ریختم و اون رو پاس دادم خطا نمیده
if (imgProduct.IsImage() && imgProduct != null)
{
string imageName = product.ImageName;
AddImageProduct(ref imageName, imgProduct);
product.ImageName = imageName;
}
اینجا من اومدم از یک متغیر دیگه استفاده کردم
اگر مستقیما product.ImageName را به متد بدم ارور میده
متن ارور ؟
Error CS0206 A property or indexer may not be passed as an out or ref parameter
چرا ref ؟
لطفا کامل توضیح بدید چرا از ref استفاده کردید
سلام استاد
چون می خواستم فیلد نام عکس هم مقدارش تغییر کنه وقتی نام عکس رو می سازم درونش ذخیره بشه
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);
}
ممنون بابت پاسخگوییتون
متن ارور رو بدید به مترجم گوگل
چشم استاد ببخشید وقتتون رو گزفتم ممنون