【问题标题】:Edit Controller in MVC doesn't change data in databaseMVC 中的编辑控制器不会更改数据库中的数据
【发布时间】:2015-05-07 20:41:40
【问题描述】:

我是 ASP.NET MVC 的新手,我正在尝试创建一个小项目,但我陷入了编辑控制器部分。 这是我的“真实”控制器,带有一个名为 PostEditViewModel 的函数,其中包含用于更改数据的查询。

public EditViewModel PostEditViewModel(EditViewModel model)
    {
        //var model = new EditViewModel();
        using (var db = new NorthwindEntities())
        {
            var dati = db.Products
                        .Where(p => p.Id == model.Id).Single();
            dati.Id = model.Id;
            dati.Name = model.Name;


            db.SaveChanges();
            return model;
        }

    }

这是我的控制器,它的功能是只验证模型状态。

    [HttpPost]
    public ActionResult Edit(EditViewModel model)
    {


        if (!ModelState.IsValid)
        {
            return View(model);
        }

        return RedirectToAction("Index");
    }

任何帮助将不胜感激。

【问题讨论】:

  • 这在什么方面不起作用?当你调试这个时,它在哪里失败了?
  • 它不会将我在视图中插入的数据保存到数据库中
  • 使用 find 而不是单个,或者在使用 savechanges 之前将实体附加到表
  • 您在控制器中调用 POstEditViewModel 的位置??

标签: c# asp.net-mvc asp.net-mvc-4 model-view-controller controller


【解决方案1】:

我的错,验证根本没有意义。

 [HttpPost]
    public ActionResult Edit(EditViewModel model)
    {

        if (!ModelState.IsValid)
        {
            return View(model);
        }
        else
        {
            WorkerServices.PostEditViewModel(model);
            return RedirectToAction("Index");
        }

【讨论】:

  • 还要注意不需要使用Where。你可以简单地做: db.Products.Single(x=> x.Id == model.Id);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2019-08-21
  • 2013-10-17
  • 1970-01-01
相关资源
最近更新 更多