C# can';当我在asp.net中禁用viewstate并且我的viewstate太大时,我无法访问窗体中的控件;我不想启用它
我想在表单中禁用我的viewstate,因为它太大(每页大约1mb),这是因为从数据库检索了一些数据,而在同一表单的其他位置,我想从母版页访问控件。 但是,当我将Listview的viewstate设置为false时,我将得到以下错误: 对象引用未设置为 对象的实例 在这种情况下我该怎么办? 维斯特太笨重了 下面是我为访问特定控件所写的内容:C# can';当我在asp.net中禁用viewstate并且我的viewstate太大时,我无法访问窗体中的控件;我不想启用它,c#,asp.net,viewstate,C#,Asp.net,Viewstate,我想在表单中禁用我的viewstate,因为它太大(每页大约1mb),这是因为从数据库检索了一些数据,而在同一表单的其他位置,我想从母版页访问控件。 但是,当我将Listview的viewstate设置为false时,我将得到以下错误: 对象引用未设置为 对象的实例 在这种情况下我该怎么办? 维斯特太笨重了 下面是我为访问特定控件所写的内容: Control cc = Page.Master.FindControl("mainContent").FindControl("ListView1").
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
您可以禁用整个页面的viewstate,并有选择地为控件启用它,如下所述
谢谢,但我有一个ListView,其中有一个复选框控件,我需要检查是否选中了批处理任务的复选框,当我禁用viewstate时,我将得到上述错误。。。如果你阅读了上面的代码,你就会知道我应该从母版页访问什么。通过为你的逻辑创建方法并从你的页面调用它,让母版页负责怎么样。顺便说一句,复选框的值只存储在客户端?如果没有,请尝试查询数据源而不是。是的,值仅在客户端显示,我想我可以将策略更改为ajax,以避免使用viewstate:-?是的,我认为最好是将代码隐藏起来。只需为复选框将ClientMode设置为可预测,您就完成了