【问题标题】:System.NullReferenceException (Visual Studio 2012, ASP.NET)System.NullReferenceException(Visual Studio 2012,ASP.NET)
【发布时间】:2013-06-06 14:24:38
【问题描述】:

如果问题执行不力,我深表歉意,这是我在这里的第一篇文章。我是使用 Visual Studio 和 ASP.NET 的新手,我承认这一点,并且遇到这个错误已经有一段时间了。

我正在尝试创建一个包含 5 个问题和 5 个文本框的表单,您可以在其中填写答案,然后当您单击按钮时,答案将保存在我的数据库中的表格中。问题是我在单击按钮后 收到错误消息。这是我的代码:

namespace uppg3
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            String minSkola = System.Web.Configuration.WebConfigurationManager.AppSettings["school"];
            Label1.Text = minSkola;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            using (svarDatabasEntities datakoppling = new svarDatabasEntities())
            {
                    var nySvar = new Svar();
                    nySvar.svar1 = Box1.Text;
                    nySvar.svar2 = Box2.Text;
                    nySvar.svar3 = Box3.Text;
                    nySvar.svar4 = Box4.Text;
                    nySvar.svar5 = Box5.Text;
                    datakoppling.Svar.Add(nySvar);
                    datakoppling.SaveChanges();
            }
        }
    }
}

这是我收到的错误消息:

“/”应用程序中的服务器错误。

Objektreferensen har inte angetts until en instans av ett objekt.

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:System.NullReferenceException:Objektreferensen har inte angetts until en instans av ett objekt.

来源错误:

第 26 行:nySvar.svar4 = Box4.Text;

第 27 行:nySvar.svar5 = Box5.Text;

第 28 行:datakoppling.Svar.Add(nySvar);

第 29 行:datakoppling.SaveChanges();

第 30 行:}

源文件:c:\Users\Ann-Helén\Documents\Visual Studio 2012\Projects\uppg3\default.aspx.cs 行:28

堆栈跟踪:

[NullReferenceException: Objektreferensen har inte angetts until en 实例 av ett objekt.] uppg3._default.Button1_Click(Object sender, c:\Users\Ann-Helén\Documents\Visual Studio 中的 EventArgs e) 2012\Projects\uppg3\default.aspx.cs:28
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +158
System.Web.UI.WebControls.Button.RaisePostBackEvent(字符串 事件参数)+174
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 事件参数)+39
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,字符串 eventArgument) +37
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +105 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint) +4411

@Oded:谢谢你的回复!我尝试了你的建议,但不幸的是得到了同样的错误。但是,我现在在程序中注意到了一些内容:

更新:

提出的一个新想法是文本框为空。现在我从其他人那里得到了 page_load 重置文本框的想法,并将尝试找到解决方案。谢谢大家的帮助,如果是这样,我会用解决方案更新这个。

【问题讨论】:

  • 看起来datakoppling.Svar 为空
  • @Justin:上面写着第 28 行,所以 Box5 为空
  • 你能给我们svarDatabasEntities类的代码吗?特别是 Svar 的吸气剂,类似于 List Svar { get { some code; } set { 更多代码; }
  • @Martin:svarDatabasEntities 是我用来连接数据库的实体框架。 Svar 是数据库中的一个表。
  • 我的错,我注意到格式具有欺骗性!我编辑了这个问题,以便更清楚第 28 行是什么;p

标签: asp.net nullreferenceexception


【解决方案1】:

datakoppling.Svar 从未分配给,null 也是如此。

代替:

datakoppling.Svar.Add(nySvar);

做:

datakoppling.Svar = new DbSet<Svar>();
datakoppling.Svar.Add(nySvar);

【讨论】:

  • 感谢您的回复!我试过了,但得到了同样的错误。我更新了主帖,并附上一个新发现的链接:i.imgur.com/1cQJvMo.png
  • @Zarkaylia - 从错误中可以清楚地看出datakoppling.SvarDbSet&lt;uppg3.Svar&gt;,而不是uppg3.Svar。答案已更新。
  • 它说的是第 28 行,所以 Box5 为空
  • @Oded:不幸的是它在 DbSet 上抱怨。
  • @leppie:这意味着它无法正确获取输入文本,我猜你可能会在这里找到一些东西。为什么获取文本不起作用,不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多