在asp.net mvc中一次编辑多个记录

本文关键字:一次 编辑 记录 net asp mvc | 更新日期: 2023-09-27 17:50:14

我正在尝试使用asp.net mvc 4 &EF6,我想同时更新多个记录。但只有一个数据在更新& &;其余的还是一样的。这是我的代码,

控制器

var resetInfo = db.myInfoes.Where(p => p.id == ClId).FirstOrDefault();
if (resetInfo != null)
{
    resetInfo.id = 0;
    resetInfo.name = "N/A";
    resetInfo.phone = "N/A"
    db.SaveChanges();
    TempData["success"] = "Information Updated Successfully!";
    return RedirectToAction("Index");
}
else
{
    TempData["fail"] = "Error! Information Update Failed!";
    return RedirectToAction("Index");
}

我在这里做错了什么吗?我如何更新记录对应的id给出了所有一次?急需这种帮助。谢谢。

在asp.net mvc中一次编辑多个记录

不要使用FirstOrDefault…它将只检索一条记录。

您可以检查您的查询是否返回任何数据(而不是检查FirstOrDefault是否返回null)。

var resetInfos = db.myInfoes.Where(p => p.id == ClId);
if (!resetInfos.Any()) {
   //Message could be "No data to update for this client" it's not really an Update fail
   TempData["fail"] = "Error! Information Update Failed!";
   //get out of here if you have no data
   return RedirectToAction("Index");
}
foreach (var resetInfo in resetInfos) {
   resetInfo.id = 0;//is it possible to have multiple resetInfo with id 0?
   resetInfo.name = "N/A";
   resetInfo.phone = "N/A"
}
TempData["success"] = "Information Updated Successfully!";
db.SaveChanges();
return RedirectToAction("Index");

您将需要一个集合,使用以下代码:

var resetInfo = db.myInfoes.Where(p => p.id == ClId).ToList();
if (resetInfo != null)
{
   resetInfo.ForEach(a =>
      {
         a.id = 0;
         a.name = "N/A";
         a.phone = "N/A";
      });
    db.SaveChanges();
    TempData["success"] = "Information Updated Successfully!";
    return RedirectToAction("Index");
}
else
{
    TempData["fail"] = "Error! Information Update Failed!";
    return RedirectToAction("Index");
}

你正在调用FirstOrDefault()在你的Where调用,这将只请求第一个记录(或你的记录类的默认实例,如果没有返回)。

你可能想这样做:

var records = db.myInfoes.Where(p => p.id == ClId);
if (records.Any())
{
    foreach(var resetInfo in records)
    {
        resetInfo.id = 0;
        resetInfo.name = "N/A";
        resetInfo.phone = "N/A"
    }
    db.SaveChanges();
    TempData["success"] = "Information Updated Successfully!";
    return RedirectToAction("Index");
}
else
{
    TempData["fail"] = "Error! Information Update Failed!";
    return RedirectToAction("Index");
}