绑定DataList是出现了“未将对象引用设置到对象的实例。”这样的错误?

cbting 2009-03-13 05:22:02
未将对象引用设置到对象的实例。
说明: 执行当前 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>
                 
<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>
                 
<asp:Label ID="Label4" runat="server" Text="市场价:"></asp:Label>
<asp:Label ID="Label12" runat="server" Text='<%# Eval("marketprice") %>'></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>
                 
<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>
                 
<asp:Label ID="Label8" runat="server" Text="折扣及:"></asp:Label>
<asp:Label ID="Label15" runat="server" Text='<%# Eval("rebate") %>'></asp:Label>
                 
<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
...全文
129 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
果然如此 2009-03-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"];
insus 2009-03-13
  • 打赏
  • 举报
回复
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); 去执行,那肯定会出现:
未将对象引用设置到对象的实例
chengrui543 2009-03-13
  • 打赏
  • 举报
回复
那是你的方法没拿到值!
可能是存储过程,或者是传参有问题
cbting 2009-03-13
  • 打赏
  • 举报
回复
是我的存储过程有问题。多谢各位的帮忙
wuyq11 2009-03-13
  • 打赏
  • 举报
回复
<a href='BookDetails.aspx?detailid= <%#Eval("detailid") %>'> <%# Eval("bookname") %> </a> 是否在datalist里。
wuyq11 2009-03-13
  • 打赏
  • 举报
回复
string detailid = Request.QueryString["detailid"]==null?"".Request.QueryString["detailid"].ToString(); 看看是否有值
cbting 2009-03-13
  • 打赏
  • 举报
回复
取不到!等到的是这样的一个“<%”符号
qinhl99 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cbting 的回复:]
有啊我是怎样子弄的
<a href='BookDetails.aspx?detailid= <%#Eval("detailid") %>'> <%# Eval("bookname") %> </a>
[/Quote]
你这里好像都不对!
qinhl99 2009-03-13
  • 打赏
  • 举报
回复
Request.QueryString["detailid"]没有值!
tan123456789 2009-03-13
  • 打赏
  • 举报
回复
那你測試下你這個Request.QueryString["detailid"].ToString();有沒有得到值呀?
cbting 2009-03-13
  • 打赏
  • 举报
回复
也不行啊。
tan123456789 2009-03-13
  • 打赏
  • 举报
回复
string detailid = Request.QueryString["detailid"].ToString();

這一句放if (!Page.IsPostBack)外面,因不回傳的時候這個值空,所以報錯。

cbting 2009-03-13
  • 打赏
  • 举报
回复
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

古龙老子 2009-03-13
  • 打赏
  • 举报
回复
这么小气,发点后台代码上来吧,象你这样谁能看懂
CutBug 2009-03-13
  • 打赏
  • 举报
回复
string detailid = Request.QueryString["detailid"];
detailid 可能为null
liuyeede 2009-03-13
  • 打赏
  • 举报
回复
Request.QueryString["detailid"]为null
lzf1988119 2009-03-13
  • 打赏
  • 举报
回复
会不会是这个方法有错 booksDetailsBLL().SelectDetailid(detailid);
cbting 2009-03-13
  • 打赏
  • 举报
回复
有啊我是怎样子弄的
<a href='BookDetails.aspx?detailid=<%#Eval("detailid") %>'><%# Eval("bookname") %></a>
angle360 2009-03-13
  • 打赏
  • 举报
回复
Request.QueryString["detailid"].ToString();
有没有取道值?

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧