Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# 遭遇';对象引用未设置为对象的实例';编辑记录时出错_C#_Asp.net_Asp.net Mvc_Razor - Fatal编程技术网

C# 遭遇';对象引用未设置为对象的实例';编辑记录时出错

C# 遭遇';对象引用未设置为对象的实例';编辑记录时出错,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,嗨,我正在试图找出为什么只有当我试图编辑数据库中的记录时才会出现此错误,但代码与编辑更新代码无关。此代码用于运行存储过程,该存储过程用于提取组并将名称放入列表中。如果您添加一条记录或添加多条记录,该功能将起作用 List<String> groups = new List<String>(); groups = db.spGetCurrentInsuranceGroups().ToList(); /* This where the stored procedure

嗨,我正在试图找出为什么只有当我试图编辑数据库中的记录时才会出现此错误,但代码与编辑更新代码无关。此代码用于运行存储过程,该存储过程用于提取组并将名称放入列表中。如果您添加一条记录或添加多条记录,该功能将起作用

List<String> groups = new List<String>(); 

groups = db.spGetCurrentInsuranceGroups().ToList();

/* This where the stored procedure is being called to populate the insurance groups*/
foreach (String group in groups)
{
    <option value="@group">@group</option>
}
列表组=新列表();
groups=db.spGetCurrentInsuranceGroups().ToList();
/*这是调用存储过程以填充保险组的位置*/
foreach(组中的字符串组)
{
@团体
}
下面是添加新记录和编辑的图像。它填充下拉列表。但是,如果单击“选择”,则它希望给出一个问题

如您所见,它填充了保险部分,如果您点击submit更新记录,它就会出现问题

这是我得到的错误页面

“/”应用程序中出现服务器错误。对象引用未设置为 对象的实例。描述:发生未处理的异常 在执行当前web请求期间。请检查 堆栈跟踪以获取有关错误及其位置的详细信息 源于代码

异常详细信息:System.NullReferenceException:对象引用不存在 设置为对象的实例

源错误:

第202行:foreach(groups.OfType().ToList()中的var组)

堆栈跟踪:

[NullReferenceException:对象引用未设置为 对象。]System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +271 System.Web.WebPages.WebPages.ExecutePageHierarchy(IEnumerable`1 executors)+112 System.Web.WebPages.WebPages.ExecutePageHierarchy() +128 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter编写器、WebPageUnderingBase起始页)+131
System.Web.WebPages.WebPageHttpHandler.ProcessRequestInternal(HttpContextBase httpContext)+178


版本信息:Microsoft.NET Framework版本:4.0.30319;ASP.NET版本:4.6.81.0

马库斯,你的代码太短,无法获得意见(我真的不知道第202行到底是什么),但我看到你在代码中混用,我认为这是错误的

但是,考虑到您的代码,您应该像这样引用组变量:

   List<String> groups = new List<String>(); 
   groups = db.spGetCurrentInsuranceGroups().ToList();

   foreach (String group in groups)
      {
         <option value="@group">group</option>
      }
列表组=新列表();
groups=db.spGetCurrentInsuranceGroups().ToList();
foreach(组中的字符串组)
{
组
}

祝您好运

检查您的函数,很可能“spGetCurrentInsuranceGroups”没有将对象返回到代码中。我不能确定,因为您没有发布实际导致错误的代码,但我愿意猜测问题是由于函数由于无序条件返回空对象造成的。

我解决了问题。当我将信息传递给更新代码时,它没有传递要更改的记录的id,出于某种原因,我在foreach循环上抛出了错误,这是为了保险


感谢大家的帮助和想法。

空引用异常意味着您的程序在需要非空值时遇到空值。db.spGetCurrentInsuranceGroups()实际返回的是什么?存储过程以字符串形式返回组的名称。但是就像我说的,如果我正常运行它并打开页面添加记录,它会工作,但是只有当我试图编辑现有记录时,它才会给我这个错误。David,感谢您的快速响应。“@group”代码正在提取值和内部html文本的名称。这是我在你的代码中看到的唯一区别。如果我正常运行它并打开页面添加记录,它就会工作,但只有在我试图编辑现有记录时才会出现该错误。但是这些代码与编辑记录没有任何关系。嗯。。。我懂了。。。问题可能与获取要编辑的记录(而不是代码本身)的存储过程有关,假设您签入了数据库(如果新记录真的被追加到数据库中)。是的,记录被追加到数据库中。我把它们拉到另一个页面上创建的动态表中,其中有编辑链接。然后,当您单击编辑链接时,它会将您带到同一页面,在该页面中添加新记录并自动填充表单。存储过程是否返回字符串?但ToList()指令用于获取字符串数组并转换为list。那么,存储过程是否将这些字符串格式化为数组?如果没有,它们之间是否有分隔符(如;或,)?我可以自己运行存储过程,并且它可以工作。我在原始帖子中添加了一些图片,显示它正在拉取和填充选项。当单击submit按钮时,也就是当它抛出错误时,但我甚至尝试在它编写html代码之前进行重定向,但我仍然收到错误。