MVC EditorForModel Freeman

时间:2013-03-06 18:02:44

标签: asp.net-mvc asp.net-mvc-3 editorformodel

我正在阅读一本书 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”。 Temp消息说保存完成但产品名称仍然是“皮划艇”。 Results of editing

1 个答案:

答案 0 :(得分: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();
}