我在我的页面中有一个ASP.net页面我将此作为我的代码隐藏文件。 首先访问页面preinit,init,load方法被调用。在回发上 调用preinit,init,load方法。
我的问题是LoadViewstate和控制状态事件(重写方法)在回发后也没有触发
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
}
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
}
protected override void LoadControlState(object savedState)
{
base.LoadControlState(savedState);
}
protected void Page_Init(object sender, EventArgs e)
{
}
protected void Page_Load(object sender, EventArgs e)
{
// lblName.Text = ViewState["Test"].ToString();
}
答案 0 :(得分:3)
这种方法主要用于 .NET Framework基础架构和 不打算直接使用 你的代码。但是,控制开发人员 可以覆盖此方法以指定 自定义服务器控件如何恢复 它的观点状态。欲获得更多信息, 请参阅ASP.NET状态管理概述。
LoadViewState方法恢复 已保存的视图状态信息 在以前的SaveViewState期间 请求。 WebControl类 覆盖基础LoadViewState 处理ViewState的方法,Style, 和属性属性。
另请注意
控制状态有时您需要 存储控制状态数据以便 控件正常工作。对于 例如,如果您已编写自定义 具有不同标签的控件 按顺序显示不同的信息 为了使该控件按预期工作, 控件需要知道哪个选项卡 往返之间选择。该 可以使用ViewState属性 这个目的,但是查看状态可以 在页面级别关闭 开发者,有效地打破你的 控制。要解决这个问题,请使用ASP.NET 页面框架公开了一个功能 ASP.NET称为控件状态。
ControlState属性允许您 坚持财产信息 特定于控件而不能 像ViewState一样关闭 属性。
如果您的控件是客户服务器控件,请查看
有关viewstate的完整概述 - 必须搜索我的书签,请尝试
答案 1 :(得分:3)
ASP.NET优化此调用,并且仅当有任何自定义数据写入视图状态时才调用LoadViewState。
如果在第一次调用中将某些内容设置为视图状态(例如ViewState [“foo”] = 42;),则将在下一个(及后续)回调中调用LoadViewState。