当我在asp.net中禁用viewstate并且我的viewstate太笨重而我不想启用它时,无法访问我的表单中的控件

时间:2011-03-19 20:32:17

标签: c# asp.net viewstate

我想在表单中禁用我的viewstate,因为它太大(每页大约1mb),因为从数据库中检索一些数据,而在同一表单上的其他地方,我想从我的母版页访问一个控件。 但是当我将Listview的viewstate设置为false时,我会收到以下错误:

  

对象引用未设置为   对象的实例。

在这种情况下我该怎么办? veiwstate太笨重了 这是我为访问特定控件而编写的内容:

Control cc = Page.Master.FindControl("mainContent").FindControl("ListView1").FindControl("itemPlaceholderContainer");

        foreach (Control ListItemctrl in cc.Controls)
        {
            Control lblNewsId = ListItemctrl.FindControl("lblNewsID");
            if (lblNewsId != null)
            {
                Type t = lblNewsId.GetType();
                if (t.FullName == "System.Web.UI.WebControls.Label")
                {

                    string newsID = ((Label)lblNewsId).Text;

                    foreach (Control childCtrl in ListItemctrl.Controls)
                    {


                        CheckBox ctrlCB = childCtrl.FindControl("chkItem") as CheckBox;

                        if (ctrlCB.Checked)
                        {

                            //based on DDLAction we will do the things ;)


                        }
                        if (childCtrl.FindControl("chkItem") != null)
                            break;

                    }//end foreach childCtrl
                }
            }//end outer if

        }//end foreach listItenctrl

1 个答案:

答案 0 :(得分:1)

您可以停用整个页面的viewstate,并按照此处的说明为您的控件选择性地启用它

http://www.4guysfromrolla.com/articles/071410-1.aspx