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以上
......
<asp:DropDownList ID="compactType" runat="server" AutoCallBack="True" Width="153px"> </asp:DropDownList>
<?xml version="1.0" encoding="utf-8" ?>
<roots>
<root>
<id>1</id>
<Culture> ......
前台代码:
<script type="text/javascript">
<%=LoadImage() %>
imgUrl1="uploads/"+ImgSrc[0];
imgtext1=ImgAlt[0]
imgLink1=escape("adimg.aspx?Img_ID="+ImgUrl[0]);
imgUrl2="uploads/"+ImgSrc[1];
imgtext2=ImgAlt[1]
imgLink2=escape("adimg.aspx?Img_ID="+ImgUrl[1]);
imgUrl3=" ......
代码很简单的,我把我平时写过的贴出来给大家看看:
if (bResult == true) //登录的用户名和密码正确
{
//保存登录的用户名
Session["LoginUser"] = FormatString.Replace(txtLoginUser.Text); //这里就是给session赋值了 ......
有很久一段时间我的BLOG上没有出现AJAX相关讯息了,主要当然是因为绝大部分的重心都放到了Silverlight身上(可预期的未来应该也会是如此)。
但由于工作上的需要,最近还是回头看了一下即将推出的ASP.NET Ajax Library...,顺便找了一下网络上的讯息,看这个态势我猜想应该不少ASP.NET开发人员忽略掉了这个其实已经bet ......