У меня есть класс продукта:класс Update, который имеет другой класс
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int Amount { get; set; }
public virtual Brand Brand { get; set; }
}
Я пытаюсь обновить модель сделать это:
[HttpPost]
public ActionResult Edit(Product product)
{
if (ModelState.IsValid)
{
product.Brand = db.Brands.Find(product.Brand.Id);
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}
Проблема заключается в том, что все мои свойства обновляются, но Бренд !! Как это сделать, чтобы обновить его?
Если я:
[HttpPost]
public ActionResult Edit(Product product)
{
if (ModelState.IsValid)
{
db.Products.Attach(product);
product.Brand = db
.Brands
.Find(2); // << with a static value
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}
это работает ... но если я пытаюсь это ниже, даже несмотря на то, BrandId 2, он не работает:
[HttpPost]
public ActionResult Edit(Product product)
{
if (ModelState.IsValid)
{
db.Products.Attach(product);
int BrandId = product.Brand.Id;
product.Brand = db
.Brands
.Find(BrandId);
db.Entry(product).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(product);
}
Ваш код не задан другой Бренд. Вы выбираете Бренд, который уже есть. –
В представлении бренд является выпадающим списком, поэтому параметр продукта имеет идентификатор бренда = 1, но все остальные свойства являются нулевыми .. даже если я делаю «db.Entry (product.Brand) .State = EntityState.Modified; ', it не работает. – MuriloKunze
Вам, вероятно, необходимо подключить Продукт к контексту. –