ASP.NET避免页面重新整理时重复发送...
我们可以继承 ASP.NET 的 Page 类别,自行扩充所需的功能!作法如下:
1、继承 System.Web.UI.Page,自订一个 BasePage 类别。
以下为引用的内容:
using
System;
/// <summary>
/// BasePage 的摘要描述
/// </summary>
public
class
BasePage : System.Web.UI.Page
{
public
BasePage() { }
}
2、在 BasePage 类别底下撰写 SetActionStamp 方法,目的是在 Session 存放一个系统时间戳记。
以下为引用的内容:
/// <summary>
/// 設置戳記
/// </summary>
private
void
SetActionStamp()
{
Session[
"actionStamp"
] = Server.UrlEncode(DateTime.Now.ToString());
}
3、处理 PreRender 事件,在网页初次载入时设置戳记,且每次载入执行时会把该戳记存放到 HiddenField 里。
以下为引用的内容:
public
BasePage() {
this
.PreRender +=
new
EventHandler(Page_PreRender); }
void
Page_PreRender(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
SetActionStamp();
}
ClientScript.RegisterHiddenField(
"actionStamp"
, Session[
"actionStamp"
].ToString());
}
4、自订 IsRefresh 属性,藉由判断 HiddenField 存放的戳记是否等于 Session
裡存放的值,就可以得知网页是否经由重新整理动作回传。
以下为引用的
相关文档:
对“添加”、“提交”、“保存”、“更新”等按钮需要对数据库进行写操作的按钮,一定要在页面初始化时加载脚本,防止多次重复点击,例如:
protected void Page_Load(object sender, EventArgs e)
{
//.net 2.0以上
......
方法一:
HtmlProxy.cs:
using System.Text;
using System.IO;
/// <summary>
/// HtmlProxy 的摘要说明
/// </summary>
public class HtmlProxy
{
public HtmlProxy()
{
//
......
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class _Default : Syste ......
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Mat ......