一个疑难问题,至今找不出原因在哪里,希望大家帮忙!
我用的是.net2003;
我用个Repeater列出新闻的标题的列表
<ItemTemplate>
<asp:HyperLink CssClass= "webnews " Target= "_blank " ID= "HNews " Runat= "server "> </asp:HyperLink>
</ItemTemplate>
然后在后台HNews.NavigateUrl = String.Format( "NewsDetail.aspx?NewsID={0} ", ID);
在NewsDetail.aspx里我放了个名为CommentPart的用户控件用来发表评论,然后给它赋参数:
CommentPart cp = new CommentPart();
cp = (CommentPart)this.FindControl( "CommentPart1 ");
cp.NewsID = this.NewsID;
问题来了,第一次打开任何一个新闻详细界面的时候,都能正常显示,但是第二次打开新闻详细界面的时候会在cp.NewsID = this.NewsID;这句提示未将对象引用到实例。我试着排出有可能引发问题各种原因都失败了,请大家帮我找找是哪里的问题,谢谢!
------解决方案--------------------请检查cp是不是被你Dispose了??
一般运行后被释放的对象会造成只能运行一次。
==================================================================
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
优惠接单开发,收费带初学者,组件控件定制开发,成品源代码批发
联系方式:Q64180940(请清楚注明业务还是技术咨询) 全天在线
==================================================================
------解决方案--------------------编程需要学会中断,看看是那一个变量引发的故障;
==================================================================
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
优惠接单开发,收费带初学者,组件控件定制开发,成品源代码批发
联系方式:Q64180940(请清楚注明业务还是技术咨询) 全天在线
==================================================================
------解决方案--------------------cp = (CommentPart)this.FindControl( "CommentPart1 ");
这句执行后看看cp是否为null
另外就是this.NewsID是什么
------解决方案--------------------对了,用户控件是不能用 new 来动态加载滴,
得
CommentPart cp = Page.LoadControl( "CommentPart.ascx所在虚拟路径 ") as CommentPart;
------解决方案--------------------1。
UserControl 就没有实现 IDisposable 接口,不会有 Dispose 方法
2。
我是这样加载控件的:
CommentPart cp = new CommentPart();
cp = (CommentPart)this.FindControl( "CommentPart1 ");
=======
哪里加载的?CommentPart1 拽到 .aspx 的?
另外,这里 new 一个,纯属浪费
CommentPart cp = null;
cp = (CommentPart)this.FindControl( "CommentPart1 ");
------解决方案--------------------代码贴全点,不要忽略重点,一堆无用信息
------解决方案--------------------把NewsDetail里面的有的控件遍厲出來,看看CommentPart1對像是否還存在。
------解决方案--------------------if(!IsPostBack)
{
this.ShowNews ();
CommentPart cp = new CommentPart();
cp = (CommentPart)this.FindControl( "CommentPart1 ");
object o1 = cp;
cp.NewsID = this.NewsID;
}
当用户发表评论后,此段代码不会执行的哦,cp当然不会被加载的.
你这样动态的加载.cp的状态是不会被保存的哦.
所以这段代码应该放在!page.ispostback 的外面吧.
------解决方案--------------------if(!IsPostBack)
{
this.ShowNews ();
CommentPart cp = new CommentPart();
cp = (CommentPart)this.FindControl( "CommentPart1 ");
object o1 = cp;
cp.NewsID = this.NewsID;
}
这里只在页面第一次加栽时执行
------解决方案--------------------可能你需要用一下ViewState来保存一下你的值