我在aspx页面放了一个TextBox和一个Button<body>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>然后在aspx.cs文件中写事件 protected void Page_Load(object sender, EventArgs e)
{
} protected override void LoadViewState(object savedState)
{
Response.Write(" this is LoadViewState event!");
base.LoadViewState(savedState);
} protected override object SaveViewState()
{
Response.Write(" this is SaveViewState event!");
return base.SaveViewState();
}
为什么无论我怎么更改TextBox的值后点Button,LoadViewState事件都不执行呢?
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>然后在aspx.cs文件中写事件 protected void Page_Load(object sender, EventArgs e)
{
} protected override void LoadViewState(object savedState)
{
Response.Write(" this is LoadViewState event!");
base.LoadViewState(savedState);
} protected override object SaveViewState()
{
Response.Write(" this is SaveViewState event!");
return base.SaveViewState();
}
为什么无论我怎么更改TextBox的值后点Button,LoadViewState事件都不执行呢?
解决方案 »
- 关于ObjectDataSource控件的使用问题?
- 有没有人用过 System.Threading.Timer
- 求一个基类(父类)对象和派生类对象的显式转换
- 用http-equiv="refresh"刷新自动跳转网页,能不能加个提示, 选“是”就跳转,选“否”不跳转,能实现吗? asp.net (C#)
- 关于站点地图的问题
- 关于ChkListBox的问题!!在线等,麻烦各位
- 问个数据库提取问题,是SQL语句的问题
- 怎样将全角空格转为半角?
- 自定义web控件如何根据设置属性的变化在设计时自动刷新
- .net如何得到发送邮件的退信?如何判断退信是那次群发时的?
- DATATABLE排列问题请教
- discuz NT 的index.aspx只有<%@ Page %>
但LoadViewState事件每次都不执行,请问大家这是什么原因呢?
TextBox 实现了IPostBackDataHandler 接口,
它的数据加载 是在 LoadPostData 时
也就是在 LoadViewState 后, Page_load 前
base.LoadViewState(savedState);这个方法只会加载Page本身的视图状态,并不会加载页面上子控件的视图状态,所以在这个方法调用的前后,子控件的视图状态并不会变化。
之前有人问过
LoadPostData 事件也不触发哦..
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" Text="123"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
} protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
} public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
return true;
}
}
LoadViewState和LoadPostData事件都不触发..
这样不是Page页自动维护TextBox的ViewState吗?
为什么在PostBack时不触发LoadViewState事件呢?
Page维护Page的ViewState,TextBox维护TextBox的ViewState,各不相干。
呵呵,我在Page_Load事件中添加了一个ViewState值..
protected void Page_Load(object sender, EventArgs e)
{
ViewState["aa"] = "abc";
}LoadViewState是有执行了..
但一定要这样吗?LoadViewStaet不是每次在回发时都会执行的吗?
{
if ((savedState != null) && !this.flags[4])
{
if ((this.Page != null) && this.Page.IsPostBack)
{
object first = null;
object state = null;
ArrayList childState = null;
Pair pair = savedState as Pair;
if (pair != null)
{
first = pair.First;
childState = (ArrayList) pair.Second;
}
else
{
Triplet triplet = (Triplet) savedState;
first = triplet.First;
state = triplet.Second;
childState = (ArrayList) triplet.Third;
}
try
{
if ((state != null) && (this._adapter != null))
{
this._adapter.LoadAdapterViewState(state);
}
if (first != null)
{
this.LoadViewState(first);
}
if (childState != null)
{
if (this.LoadViewStateByID)
{
this.LoadChildViewStateByID(childState);
}
else
{
this.LoadChildViewStateByIndex(childState);
}
}
}
catch (InvalidCastException)
{
throw new HttpException(SR.GetString("Controls_Cant_Change_Between_Posts"));
}
catch (IndexOutOfRangeException)
{
throw new HttpException(SR.GetString("Controls_Cant_Change_Between_Posts"));
}
}
this._controlState = ControlState.ViewStateLoaded;
}
}可以看到,有判断“if (first != null)”。其实这种知识,自己看.net framework源代码就行了,上csdn不一定能问出什么。