Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net mvc中一次编辑多个记录_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

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

C# 在asp.net mvc中一次编辑多个记录,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在尝试使用asp.NETMVC4和EF6开发一个网站,在这里我想同时更新多个记录。但只有一个数据正在更新&其余数据仍然相同。这是我的密码 控制器 我做错什么了吗?如何一次更新与给定id对应的记录?我非常需要这个帮助。谢谢。不要使用first或default。。。它将只检索一条记录 您可以检查查询是否返回任何数据,而不是检查FirstOrDefault是否返回null var resetInfos = db.myInfoes.Where(p => p.id == ClId); if (

我正在尝试使用asp.NETMVC4和EF6开发一个网站,在这里我想同时更新多个记录。但只有一个数据正在更新&其余数据仍然相同。这是我的密码

控制器

我做错什么了吗?如何一次更新与给定id对应的记录?我非常需要这个帮助。谢谢。

不要使用first或default。。。它将只检索一条记录

您可以检查查询是否返回任何数据,而不是检查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");

如果在Where调用中调用FirstOrDefault,则只会请求第一条记录,如果没有返回,则只请求记录类的默认实例

您可能希望改为执行以下操作:

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");
}

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

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应该给您一个提示…记录在MSSQL数据库中。@ZoharPeled,我应该使用什么来代替FirstOrDefault?除了下面的答案之外,最好在try-catch块中添加与数据库相关的内容。。。如果失败,记录不能为空,因此如果记录!=空值是无用的。您可以使用if records.AnyUpdated检查记录是否有数据。不过,任何方法都不是属性吗?@Xefan,tnx用于响应!:@Farooque更新..ToList到.ToList。。。你的回答中有一个拼写错误,这正是我要找的。这让我意识到要理解asp.net还有很长的路要走。Tnx顺便说一下!:
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");
}