Page代码就是Form内一个提交按钮如下:
1 <html xmlns="http://www.w3.org/1999/xhtml" >
2 <head runat="server">
3 <title>无标题页</title>
4 </head>
5 <body>
6 <form id="form1" runat="server">
7 <div>
8 <asp:Button ID="Button1" runat="server" Text="提交" onclick="Button1_Click" />
9 </div>
10 </form>
11 </body>
12 </html>
.cs代码
namespace WebApplication4.测试重复提交
{
public partial class HuangKai :BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
string dd = "";
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Session["update"].ToString() == Request["viewupdate"].ToString())
{
Response.Write("正常提交");
}
else
{
Response.Write("重复刷新");
}
}
}
}
页面继承之BasePage类
namespace WebApplication4.测试重复提交
{
public class BasePage:System.Web.UI.Page
{
protected void Page_PreRender(object sender, EventArgs e)
{
Session["update"] = Server.UrlEncode(DateTime.Now.ToString());
ClientScript.RegisterHiddenField("viewupdate", Session["update"].ToString());
}
}
}
现在碰到的问题是,我点击button提交 页面显示是“正常提交”,而F5刷新提交则显示是“重复提交”,可不管哪种提交方式,最后都将在页面注册最新的Hidden变量,可为什么不一样呢?我原先以为是按提交是改变变量值,按刷新F5不改变值,可实际上不管哪种方式都会执行Page_PreRender方法,都会将最新的Session["update"]值注册到页面,为什么到后台又不一样了呢,郁闷,还请高手赐教下!
你想在刷新后不执行这些代码,就用
if(!isPostBack)括起来
我看见别人遇见过,应该是basepage注册脚本的问题,不负责任的猜测~~