Я не могу получить данные в представление из ViewModel. Что я должен делать? [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Я не могу получить данные в представление из ViewModel. Что я должен делать? [закрыто]

Сообщение Anonymous »

Я пытался обновить продукты и добавить их на индексную страницу. Однако что-то не так с моими моделями просмотра. Я также не могу получить другие данные из других моделей представления.
Изображение
Невозможно выполнить опцию upsert. Каковы возможные причины и как я могу решить проблему? Список, который вы видите, не обновляется.
Модель:

Код: Выделить всё

public class ProductVM
{
public Product Product { get; set; }

[ValidateNever]
public IEnumerable CategoryList { get; set; }

}
Просмотр:

Код: Выделить всё

@using Jewelry.Models.ViewModels
@model ProductVM




Ürün Oluştur











@* Kategori Oluştur *@

@*  *@

















--Kategori Seç








@if (Model.Product.Id != 0)
{
Güncelle
}
else
{
Oluştur
}


Listeye Geri Dön







[img]@Model.Product.ImageUrl[/img]
                         style="border-radius:5px; border:1px solid #bbb9b9" />







@section Scripts {

@{

}

}
Контроллер:

Код: Выделить всё

public IActionResult Upsert(int? id)
{

ProductVM productVM = new()
{
CategoryList = _unitOfWork.Category.GetAll().Select(u => new SelectListItem
{
Text = u.Name,
Value = u.Id.ToString()
}),

Product = new Product()
};

if (id == null || id == 0)
{
return View(productVM);
}
else
{
productVM.Product = _unitOfWork.Product.Get(u => u.Id == id);
return View(productVM);
}
}

[HttpPost]
public IActionResult Upsert(ProductVM productVM, IFormFile? file)
{

if (ModelState.IsValid)
{
string wwwRootPath = _webHostEnvironment.WebRootPath;
if (file != null)
{
string fileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
string productPath = Path.Combine(wwwRootPath, @"images\product");

if (!string.IsNullOrEmpty(productVM.Product.ImageUrl))
{
var oldImagePath = Path.Combine(wwwRootPath, productVM.Product.ImageUrl.TrimStart('\\'));

if (System.IO.File.Exists(oldImagePath))
{
System.IO.File.Delete(oldImagePath);
}
}

using (var fileStream = new FileStream(Path.Combine(productPath, fileName), FileMode.Create))
{
file.CopyTo(fileStream);
}

productVM.Product.ImageUrl = @"\images\product\" + fileName;
}

if (productVM.Product.Id == 0)
{
_unitOfWork.Product.Add(productVM.Product);
}

else
{
_unitOfWork.Product.Update(productVM.Product);
}

_unitOfWork.Save();
TempData["success"] = "Ürün başarılı bir şekilde oluşturuldu.";
return RedirectToAction("Index");
}
else
{
productVM.CategoryList = _unitOfWork.Category.GetAll().Select(u => new SelectListItem
{
Text = u.Name,
Value = u.Id.ToString()
});

return View(productVM);
}

}
Я пытался изменить модель представления только на модель «Продукт», но я не могу сменить контроллер. Должен ли я изменить его только на модель, а не на модель представления, если да, то как я могу это сделать на контроллере?

Подробнее здесь: https://stackoverflow.com/questions/786 ... hould-i-do
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»