#asp.net #sql-server
Вопрос:
Я пытаюсь отобразить изображения, которые были загружены и сохранены в базе данных, и я не знаю, что делать. Я видел учебники, и похоже, что мой код нормальный, но у меня нет разрешения передать код модели для визуализации? Уже пытались выполнить ручную регистрацию, не проходя через базу данных, и это сработало, но когда база данных визуализации драйверов отсутствует, она не работает, следуйте коду:
Остальные коды находятся в представлении «Индекс» в распечатанном виде.
введите описание изображения здесь
Контроллер
public class ProdutosController : Controller
{
private readonly ApplicationDbContext _context;
private readonly IWebHostEnvironment _hostingEnvironment;
public ProdutosController(ApplicationDbContext context, IWebHostEnvironment hostingEnvironment)
{
_context = context;
_hostingEnvironment = hostingEnvironment;
}
public async Task<IActionResult> Index()
{
return View(await _context.Produtos.ToListAsync());
}
// GET: Produtos/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var produto = await _context.Produtos
.FirstOrDefaultAsync(m => m.Id == id);
if (produto == null)
{
return NotFound();
}
return View(produto);
}
public IActionResult Create()
{
ProImagens vm = new ProImagens();
ViewBag.images = new SelectList(_context.Produtos.ToList(), "Id", "ImageName");
return View(vm);
}
[HttpPost]
public IActionResult Create(ProImagens vm)
{
foreach (var item in vm.Images)
{
string stringFileName = UploadFile(item);
var produtoImage = new ProdutoImage
{
ImageURL = stringFileName,
Produto = vm.Produto
};
_context.ProdutoImages.Add(produtoImage);
}
_context.SaveChanges();
return RedirectToAction("Index");
}
private string UploadFile(IFormFile file)
{
string fileName = null;
if (file != null)
{
string uploadDir = Path.Combine(_hostingEnvironment.WebRootPath, "uploads");
fileName = Guid.NewGuid().ToString() "-" file.FileName;
string filePath = Path.Combine(uploadDir, fileName);
using (var fileStream = new FileStream(filePath, FileMode.Create))
{
file.CopyTo(fileStream);
}
}
return fileName;
}
Модель
public class Produto
{
public int Id { get; set; }
public string Nome { get; set; }
public float Valor { get; set; }
public string Memoria { get; set; }
public string Cor { get; set; }
public string ImageName { get; set; }
public ICollection<ProdutoImage> ProdutoImages { get; set; }
}
public int Id { get; set; }
public string ImageURL { get; set; }
public Produto Produto { get; set; }
}
Модель представления
public class ProImagens
{
public List<IFormFile> Images { get; set; }
public Produto Produto { get; set; }
}
View
@model IEnumerable< Projeto1___Ecomerce.Models.Produto>
@{ ViewData["Title"] = "Index"; }
Index
Create New
@foreach (var p in Model) {
<img class="card-img" src="~/uploads/@p.ImageName" />
<div class="card-body">
<p><b>@p.Nome</b> <b>@p.Memoria</b> <b>@p.Cor</b> </p>
<p><b>R$ @p.Valor</b></p>
</div>
</div>
}