C# 类在某些方法中可用,但在其他方法中不可用

C# 类在某些方法中可用,但在其他方法中不可用,c#,asp.net,nullreferenceexception,C#,Asp.net,Nullreferenceexception,下面是隐藏的代码: public partial class ViewDetailedActivity : System.Web.UI.Page { public AstraFunctions vdaa = new AstraFunctions(); public AstraFunctions vdaabdt = new AstraFunctions(); public AstraFunctions vdaabdc = new AstraFunctions();

下面是隐藏的代码:

public partial class ViewDetailedActivity : System.Web.UI.Page
{
    public AstraFunctions vdaa = new AstraFunctions();
    public AstraFunctions vdaabdt = new AstraFunctions();
    public AstraFunctions vdaabdc = new AstraFunctions();
    protected void Page_Load(object sender, EventArgs e)
    {
            if (!IsPostBack)
            {
                AstraHdr.Set_Title("View Detailed ASTRA Activity");
                SetVDAAPanelView(); // <----  THIS WORKS!
            }
    }
/*.............*/
    protected void SetVDAAPanelView()
    {
        try
        {
//THIS ALL WORKS
            string sSqlCommand = "Astra_ReportActivity";
            SqlParameter[] SQLParameters = null;
            vdaa.SetUp(gvViewDetailedASTRAActivity, sSqlCommand, SQLParameters);
            vdaa.SetDataSet();
            Response.Write(vdaa.gv.ID.ToString();
            pnlViewDetailedASTRAActivity.Visible = true;
            pnlViewDetailedASTRAActivityByDate.Visible = false;
            pnlViewDetailedASTRAActivityByDODACC.Visible = false;
        }
        catch (Exception ex)
        {
            Response.Write("Error in SetVDAAPanelView():  " + ex);
        }
    }
/*..............*/
    protected void gvViewDetailedASTRAActivity_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            vdaa.gv.ID.ToString(); // DOES NOT work!
            //vdaa.gv_PageIndexChanging(sender, e); // this DOES NOT work!
        }
        catch (Exception ex)
        {
            Response.Write("Error in gvViewUnprocessedReceipts_PageIndexChanging():  " + ex);
        }
    }
}
public分部类ViewDetailed活动:System.Web.UI.Page
{
公共函数vdaa=新函数();
公共函数vdaabdt=新函数();
公共函数vdaabdc=新函数();
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
AstraHdr.Set_标题(“查看详细的ASTRA活动”);

SetVDAAPanelView();//尝试在会话中存储对象

public AstraFunctions vdaa;
protected void Page_Load(object sender, EventArgs e)
{
        if (!IsPostBack)
        {
          vdaa =  Session["vdaa"] != null ? 
                  (AstraFunctions)Session["vdaa"] : new AstraFunctions();
          ...//do somthing with vdaa 
          Session["vdaa"] = vdaa;
        }
}


protected void gvViewDetailedASTRAActivity_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
           AstraFunctions vdaa = (AstraFunctions)Session["vdaa"]  
            vdaa.gv.ID.ToString();
            vdaa.gv_PageIndexChanging(sender, e); 
        }
        catch (Exception ex)
        {
            Response.Write("Error in gvViewUnprocessedReceipts_PageIndexChanging():  " + ex);
        }

调试时,vdaa.gv.ID是null?还是有效值?几乎所有
NullReferenceException
的情况都是相同的。请参阅“”,以获得一些提示。答案是在这方面稍有变化。结果表明,不是类本身为null,而是类内部的所有内容-由于我在哪里/如何执行类“init”将其存储在会话中解决了我的问题。