页回发到服务器时出现"未将对象引用设置到对象的实例"!

reddust 2003-09-29 07:19:23
我做了个简单的新闻系统,有一个公共类库如下:
public class NewsPublic
{
private string siteName,siteUrl,siteMail,siteLogo,siteAd,newsAd;
public NewsPublic()
{
OleDbDataReader dr=DataAccess.OleDbDr("SELECT * FROM SiteConfig");
dr.Read();
siteName=dr["db_SiteName"].ToString();
siteUrl=dr["db_SiteUrl"].ToString();
siteMail=dr["db_SiteMail"].ToString();
siteLogo=dr["db_SiteLogo"].ToString();
siteAd=dr["db_SiteAd"].ToString();
newsAd=dr["db_NewsAd"].ToString();
}

public string SiteName
{
get
{
return siteName;
}
set
{
siteName=value;
}

}

public string SiteUrl
{
get
{
return siteUrl;
}
set
{
siteUrl=value;
}

}

.....//一些方法


在新闻系统中的.cs文件里创建了一个全局的NewsPublic np; 然后在相应的.aspx页面中用<%=np.SiteName%>调用一直没有问题,但是如果我在页面放一个按钮并引发事件后,页面却提示:未将对象引用设置到对象的实例。<%=np.SiteName%>行有错误,这是怎么回事呢?
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
saucer 2003-09-30
  • 打赏
  • 举报
回复
np is null when IsPostBack is true

if(!Page.IsPostBack)
{
np=new NewsPublic();
}

try to move it outside the if block, but your code is probably wrong, consider to use a <asp:Label> in your aspx at the place you output np.SiteName:


<asp:Label id=lblSite runat=server />


....

public class BigClass : System.Web.UI.Page
{
protected System.Web.UI.WebControls.PlaceHolder PH_ShowSClassNews;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button BTN_Search;
protected System.Web.UI.WebControls.TextBox TBX_SearchKeys;
protected System.Web.UI.WebControls.DropDownList DDL_Item;
protected System.Web.UI.WebControls.Label lblSite;
public NewsPublic np;


private void Page_Load(object sender, System.EventArgs e)
{

if(!Page.IsPostBack)
{

np=new NewsPublic();
np.ShowBClassAllNews(HttpContext.Current.Request.QueryString["BigClassName"],PH_ShowSClassNews);

lblSite.Text =np.SiteName;

OleDbDataReader dr= DataAccess.OleDbDr("SELECT db_ClassName FROM SmallClass WHERE db_BigClassName='" + HttpContext.Current.Request.QueryString["BigClassName"]+"'");
dr.Read();
DataGrid1.DataSource=DataAccess.OleDbdbView("SELECT * FROM news WHERE db_NewsSmallClass='"+dr[0].ToString()+"'",dr[0].ToString());
DataGrid1.DataBind();
dr.Close();

}
}

reddust 2003-09-30
  • 打赏
  • 举报
回复
部分代码如下:

public class BigClass : System.Web.UI.Page
{
protected System.Web.UI.WebControls.PlaceHolder PH_ShowSClassNews;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button BTN_Search;
protected System.Web.UI.WebControls.TextBox TBX_SearchKeys;
protected System.Web.UI.WebControls.DropDownList DDL_Item;
public NewsPublic np;

private void Page_Load(object sender, System.EventArgs e)
{

if(!Page.IsPostBack)
{

np=new NewsPublic();
np.ShowBClassAllNews(HttpContext.Current.Request.QueryString["BigClassName"],PH_ShowSClassNews);
OleDbDataReader dr= DataAccess.OleDbDr("SELECT db_ClassName FROM SmallClass WHERE db_BigClassName='" + HttpContext.Current.Request.QueryString["BigClassName"]+"'");
dr.Read();
DataGrid1.DataSource=DataAccess.OleDbdbView("SELECT * FROM news WHERE db_NewsSmallClass='"+dr[0].ToString()+"'",dr[0].ToString());
DataGrid1.DataBind();

}
// 在此处放置用户代码以初始化页面
}
zhongkeruanjian 2003-09-29
  • 打赏
  • 举报
回复
知道,你的NewsPublic np=new NewsPublic();是在IS(!POSTBACK)里做的,请确保在回访时也能NewsPublic np=new NewsPublic();
CMIC 2003-09-29
  • 打赏
  • 举报
回复
同意freecs(^=^)
NewsPublic np=new NewsPublic();相关语句贴出来
reddust 2003-09-29
  • 打赏
  • 举报
回复
估计是哪部分代码呢?我贴出来!
树猫 2003-09-29
  • 打赏
  • 举报
回复
页面放一个按钮并引发事件后:页面回发、刷新

我想你的代码可能有问题,所以页面回发后导致np没有被重新实例化

62,047

社区成员

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

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

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

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