获取错误: - 未将对象引用设置为对象的实例

时间:2016-05-07 11:36:42

标签: c# webforms

我的项目是关于在线资质测试系统。当我执行开始考试页面时,问题会显示但是答案没有提交。  当我点击提交按钮时,我在if(ds1.Tables[0].Rows.Count>0)上收到错误,当我点击“{1}}

上的”之前的“按钮”时出现错误

错误: - if(i==ds.Tables[0].Rows.Count-1 || i !=0)

我可以弄清楚我在哪里弄错了。看一下代码,告诉我哪里出错了,解决方案是什么。

.aspx.cs: -

object reference not set to an instance of an object

1 个答案:

答案 0 :(得分:0)

如果对象为null,则无法访问对象的属性。例如:

string Foo = null;
Console.WriteLine(Foo.Length); // null reference exception!

这是您的代码中发生的事情,除了DataTable。我怀疑你的查询没有返回结果,所以当你这样做时:

if (ds.Tables[0].Rows.Count > 0)

... Rows属性为null。您无法在null上访问Count

你必须做更多努力的空检查:

if(ds.Tables != null)
{
    if(ds.Tables[0].Rows != null)
    {
        //now you can be sure you can access `Count`
    {
}

其他纪念活动:

  1. 正如Henk所提到的那样,Timer不会像你想象的那样工作。这不是桌面应用程序,它是无状态客户端/服务器应用程序。一旦响应发送到客户端,您就失去了以这种方式与会话进行交互的能力。

  2. 重定向的正确方法是:

    Response.Redirect(url, false);
    Context.ApplicationInstance.CompleteRequest();
    
  3. 您需要参数化查询以防止SQL注入并帮助防止语法错误。我不再通过一个例子来克服这个答案,ADO.Net参数是一个非常适合谷歌的话题。
  4. 数据绑定您的单选按钮列表将优于循环和添加。