未将对象引用设置到对象的实例。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
行 19:         if (!Page.IsPostBack)
行 20:         {
行 21:             string detailid = Request.QueryString["detailid"].ToString();
行 22:             dList.DataSource = new booksDetailsBLL().SelectDetailid(detailid);
行 23:             dList.DataBind();
 源文件: d:\TwoNetBooks\BookDetails.aspx.cs    行: 21 堆栈跟踪: 
[NullReferenceException: 未将对象引用设置到对象的实例。]
   BookDetails.Page_Load(Object sender, EventArgs e) in d:\TwoNetBooks\BookDetails.aspx.cs:21
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436 --------------------------------------------------<div id="kuanjia">   
<asp:DataList ID="dList" runat="server">
    <ItemTemplate>
 
     <h3>标题</h3>
     <p class="pimagers">
     <asp:Image ID="Image1" runat="server" 
                            ImageUrl='<%#"~/imager/"+ Eval("bookpicture") %>' 
                        />
     </p>
     <p>
         <asp:Label ID="Label1" runat="server" Text="作者:"></asp:Label>
         <asp:Label ID="Label9" runat="server" Text='<%# Eval("bookwiter") %>'></asp:Label>
         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         <asp:Label ID="Label2" runat="server" Text="出版日期:"></asp:Label>
         <asp:Label ID="Label10" runat="server" Text='<%# Eval("addtime") %>'></asp:Label>
     </p>
      <p>
         <asp:Label ID="Label3" runat="server" Text="出版社:"></asp:Label>
          <asp:Label ID="Label11" runat="server" Text='<%# Eval("bookconren") %>'></asp:Label>
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         <asp:Label ID="Label4" runat="server" Text="市场价:"></asp:Label>
          <asp:Label ID="Label12" runat="server" Text='<%# Eval("etprice") %>'></asp:Label>
     </p>
      <p>
         <asp:Label ID="Label5" runat="server" Text="ISBN :"></asp:Label>
          <asp:Label ID="Label13" runat="server" Text='<%# Eval("isbn") %>'></asp:Label>
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         <asp:Label ID="Label6" runat="server" Text="会员价:"></asp:Label>
          <asp:Label ID="Label14" runat="server" Text='<%# Eval("menberprice") %>'></asp:Label>
     </p>
     <p>
         <asp:Label ID="Label7" runat="server" Text="单击次数 :"></asp:Label>
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         <asp:Label ID="Label8" runat="server" Text="折扣及:"></asp:Label>
         <asp:Label ID="Label15" runat="server" Text='<%# Eval("rebate") %>'></asp:Label>
                  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
         <asp:ImageButton ID="ImageButton1" runat="server"  />
     </p>
     
     <div id="jiejie">
     <h3>详细介绍</h3>
     <p>
         <asp:Label ID="Label16" runat="server" Text='<%# Eval("boointorudce") %>'></asp:Label>
     </p>
     </div>
    </ItemTemplate>
     
    </asp:DataList>   
  </div>
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.1433; ASP.NET 版本:2.0.50727.1433 

解决方案 »

  1.   

    Request.QueryString["detailid"].ToString(); 
    有没有取道值?
      

  2.   

    有啊我是怎样子弄的
     <a href='BookDetails.aspx?detailid=<%#Eval("detailid") %>'><%# Eval("bookname") %></a>
      

  3.   

    会不会是这个方法有错 booksDetailsBLL().SelectDetailid(detailid); 
      

  4.   

    Request.QueryString["detailid"]为null
      

  5.   

    string detailid = Request.QueryString["detailid"]; 
    detailid 可能为null
      

  6.   

    DAL层的代码
    #region 根据detailid找到相应的
           /// <summary>
           /// 根据detailid找到相应的
           /// </summary>
           /// <param name="detailid"></param>
           /// <returns></returns>
           public DataTable SelectDetailid(string detailid)
           {
               DataTable dt = new DataTable();
               string sql = "booksDetails_selectdetailid";
               SqlParameter[] para=new SqlParameter[]{
               new SqlParameter("@detailid",detailid)
               };
               dt = hepler.ExecuteQuery(sql,para,CommandType.StoredProcedure);  
               return dt;
           }
           #endregion
    ------
    BLL层的代码
    #region 根据detailid找到相应的
          /// <summary>
          /// 根据detailid找到相应的
          /// </summary>
          /// <param name="detailid"></param>
          /// <returns></returns>
          public DataTable SelectDetailid(string detailid)
          {
              return bs.SelectDetailid(detailid);
          }
          #endregion
      

  7.   

    string detailid = Request.QueryString["detailid"].ToString(); 這一句放if (!Page.IsPostBack)外面,因不回傳的時候這個值空,所以報錯。
     
      

  8.   

    那你測試下你這個Request.QueryString["detailid"].ToString();有沒有得到值呀? 
      

  9.   

    Request.QueryString["detailid"]没有值!
      

  10.   

     string detailid = Request.QueryString["detailid"]==null?"".Request.QueryString["detailid"].ToString(); 看看是否有值
      

  11.   

    <a href='BookDetails.aspx?detailid= <%#Eval("detailid") %>'> <%# Eval("bookname") %> </a> 是否在datalist里。
      

  12.   

     if (!Page.IsPostBack) 
            { 
                string detailid = Request.QueryString["detailid"].ToString(); 
              dList.DataSource = new booksDetailsBLL().SelectDetailid(detailid); 
               dList.DataBind(); 
    只要仔细想想,就是明白了.
    !Page.IsPostBack的意思是,网页一次浏览时.执行的.
    那当网页第一次执行时,就是用户根本还没有操作的可能,Request.QueryString["detailid"].ToString(); 这个肯定是一个null值.
    那当一个null值传入new booksDetailsBLL().SelectDetailid(detailid); 去执行,那肯定会出现:
    未将对象引用设置到对象的实例
      

  13.   

    加个判断:
    if (Request.QueryString["detailid"]!=null){
    行 21:            string detailid = Request.QueryString["detailid"].ToString(); 
    行 22:            dList.DataSource = new booksDetailsBLL().SelectDetailid(detailid); 
    行 23:            dList.DataBind(); 
    }
    另外,Request.QueryString["detailid"] 不需要ToString():
    行 21:            string detailid = Request.QueryString["detailid"].ToString(); 
    写成这样就行:
    行 21:            string detailid = Request.QueryString["detailid"];