0

我正在阅读一本书Pro ASP.NET MVC3 Framework - Freeman Sandersan,其中展示了如何在网上商店进行简单的管理。问题是当我尝试保存它不保存的一种产品的更改时。

编辑视图:

@using (Html.BeginForm()) {
@Html.EditorForModel()
<input type="submit" value="Save" />}

编辑方法:

[HttpPost]
public ActionResult Edit(Product product)
{
    if (ModelState.IsValid)
    {
        repository.SaveProduct(product);
        TempData["message"] = string.Format("{0} has been saved", product.Name);
        return RedirectToAction("Index");
    }
    // there is something wrong with the data values
    return View(product);
}

保存产品方法:

private EFDbContext context=new EFDbContext();
public void SaveProduct(Product product)
{
    if (product.ProductID == 0)
    {
        context.Products.Add(product);
    }
    context.SaveChanges();
}

编辑结果:我将产品名称更改为“Kayakkkkkkkkkk”。临时消息显示保存已完成,但产品名称仍为“Kayak”。 编辑结果

4

1 回答 1

0

解决了。

public void SaveProduct(Product product)
{
    if (product.ProductID == 0)
    {
        context.Products.Add(product);
    }
    else
    {
        context.Products.Attach(product);
        context.Entry(product).State = EntityState.Modified;
    }

    context.SaveChanges();
}
于 2013-03-06T18:14:02.080 回答