请教各位大虾:禁用viewstate的页面后台怎样获得控件的属性值?
为了缩小页面的体积,本人想通过这种方式优化一番。在网上查了很多资料,都没有实现这种做法的具体办法,只查到某些说法如下:只要启动控件状态,并把这两个方法的逻辑放到LoadControlState和SaveControlState中,仍然可以利用ViewState。
散分求助,请各位高手不吝赐教,在此先谢过了。 --------------------编程问答-------------------- 你可以用 form表达 提交数据。 --------------------编程问答-------------------- --------------------编程问答-------------------- Request.Form[""]取值 --------------------编程问答-------------------- 如果是开发自定义控件一般会用到LoadControlState和SaveControlState.但ControlState默认也是存在页面中的Hidden标签中的,所以你页面还是瘦不下来
--------------------编程问答-------------------- http://msdn.microsoft.com/en-us/library/1whwt1k7.aspx
这是个在自定义控件中把数据存在ControlState中的一个例子 --------------------编程问答--------------------
这是个把页面中的TextBox中的两个属性存在ControlSate中的个例子
protected override void LoadControlState(object savedState)
{
if (savedState != null)
{
Pair p = savedState as Pair;
if (p != null)
{
base.LoadControlState(p.First);
ArrayList values = (ArrayList)p.Second;
txtStartPeriodNum.ToolTip = values[0].ToString();
txtStartPeriodNum.BackColor = (Color)values[1];
}
else
{
if (savedState is ArrayList)
{
ArrayList values = (ArrayList)savedState;
txtStartPeriodNum.ToolTip = values[0].ToString();
txtStartPeriodNum.BackColor = (Color)values[1];
}
else
{
base.LoadControlState(savedState);
}
}
}
}
protected override object SaveControlState()
{
object obj = base.SaveControlState();
ArrayList values = new ArrayList();
values.Add(txtStartPeriodNum.ToolTip);
values.Add(txtStartPeriodNum.BackColor);
if (obj != null)
{
return new Pair(obj, values);
}
else
{
return (values);
}
}
补充:.NET技术 , ASP.NET