各位有没有碰到过ViewStates丢失的情况?请帮忙测试一下,注意页面的两个Response.Write输出,我这里两个都不一样,第一个Response.Write似乎有延迟,总要到下一次按钮事件才显示出真实的值。到底是我系统问题还是什么?
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Button ID="LinkFirst" runat="server" Text="第一页" OnClick="LinkFirst_Click" />
<asp:Button ID="LinkUp" runat="server" Text="上一页" OnClick="LinkUp_Click" />
<asp:Button ID="LinkDown" runat="server" Text="下一页" OnClick="LinkDown_Click" />
<asp:HyperLink ID="HyperLink1" runat="server"></asp:HyperLink>
[ <asp:Label ID="Label3" runat="server"></asp:Label> ]
<asp:HyperLink ID="HyperLink2" runat="server"></asp:HyperLink>
<asp:Button ID="LinkLast" runat="server" Text="最后页" OnClick="LinkLast_Click" />
</asp:Content>-------public partial class Basic_1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
ViewState["CurrentP"] = 1;
ViewState["TotalP"] = 6;
}
Response.Write (ViewState["CurrentP"].ToString());
} protected void Button1_Click(object sender, EventArgs e)
{
}
protected void LinkFirst_Click(object sender, EventArgs e) //第一页按钮
{
ViewState["CurrentP"] = 1;
Response.Write(ViewState["CurrentP"].ToString());
}
protected void LinkUp_Click(object sender, EventArgs e) //上一页按钮
{
ViewState["CurrentP"] = (int)ViewState["CurrentP"] - 1;
Response.Write(ViewState["CurrentP"].ToString());
}
protected void LinkDown_Click(object sender, EventArgs e) //下一页按钮
{
ViewState["CurrentP"] = (int)ViewState["CurrentP"] + 1;
Response.Write(ViewState["CurrentP"].ToString());
}
protected void LinkLast_Click(object sender, EventArgs e) //最后一页按钮
{
ViewState["CurrentP"] = (int)ViewState["TotalP"];
Response.Write(ViewState["CurrentP"].ToString());
}
}
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<asp:Button ID="LinkFirst" runat="server" Text="第一页" OnClick="LinkFirst_Click" />
<asp:Button ID="LinkUp" runat="server" Text="上一页" OnClick="LinkUp_Click" />
<asp:Button ID="LinkDown" runat="server" Text="下一页" OnClick="LinkDown_Click" />
<asp:HyperLink ID="HyperLink1" runat="server"></asp:HyperLink>
[ <asp:Label ID="Label3" runat="server"></asp:Label> ]
<asp:HyperLink ID="HyperLink2" runat="server"></asp:HyperLink>
<asp:Button ID="LinkLast" runat="server" Text="最后页" OnClick="LinkLast_Click" />
</asp:Content>-------public partial class Basic_1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
ViewState["CurrentP"] = 1;
ViewState["TotalP"] = 6;
}
Response.Write (ViewState["CurrentP"].ToString());
} protected void Button1_Click(object sender, EventArgs e)
{
}
protected void LinkFirst_Click(object sender, EventArgs e) //第一页按钮
{
ViewState["CurrentP"] = 1;
Response.Write(ViewState["CurrentP"].ToString());
}
protected void LinkUp_Click(object sender, EventArgs e) //上一页按钮
{
ViewState["CurrentP"] = (int)ViewState["CurrentP"] - 1;
Response.Write(ViewState["CurrentP"].ToString());
}
protected void LinkDown_Click(object sender, EventArgs e) //下一页按钮
{
ViewState["CurrentP"] = (int)ViewState["CurrentP"] + 1;
Response.Write(ViewState["CurrentP"].ToString());
}
protected void LinkLast_Click(object sender, EventArgs e) //最后一页按钮
{
ViewState["CurrentP"] = (int)ViewState["TotalP"];
Response.Write(ViewState["CurrentP"].ToString());
}
}
默认的形式应该是这样!!
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
.............
.............
......你的代码
</asp:Content>
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["CurrentP"] = 1;
ViewState["TotalP"] = 6;
}
Response.Write(ViewState["CurrentP"].ToString());
//首次加载: 1
//点击第一页按钮后,
//页面首先回传,触发page load事件;在此事件中,Response.Write 上次保存的viewstate值:1;
//然后触发LinkFirst_Click
//点击上一页按钮后,
//页面首先回传,触发page load事件;在此事件中,Response.Write 上次保存的viewstate值:1;
//然后触发LinkFirst_Click
} protected void Button1_Click(object sender, EventArgs e)
{ }
protected void LinkFirst_Click(object sender, EventArgs e) //第一页按钮
{
ViewState["CurrentP"] = 1;
Response.Write(ViewState["CurrentP"].ToString());
//直到此时,ViewState["CurrentP"]的值才被改变成:1,并输出,所以页面会显示“11”
}
protected void LinkUp_Click(object sender, EventArgs e) //上一页按钮
{
ViewState["CurrentP"] = (int)ViewState["CurrentP"] - 1;
Response.Write(ViewState["CurrentP"].ToString());
//直到此时,ViewState["CurrentP"]的值才被改变成:0,并输出,所以页面会显示“10”
}
protected void LinkDown_Click(object sender, EventArgs e) //下一页按钮
{
ViewState["CurrentP"] = (int)ViewState["CurrentP"] + 1;
Response.Write(ViewState["CurrentP"].ToString());
}
protected void LinkLast_Click(object sender, EventArgs e) //最后一页按钮
{
ViewState["CurrentP"] = (int)ViewState["TotalP"];
Response.Write(ViewState["CurrentP"].ToString());
}
}
楼主对回发机制、页面事件都没有真正理解~~~~~
努力呀