public string HiddenFieldID
{
get { return (string)ViewState["HiddenFieldID"]; }
set { ViewState["HiddenFieldID"] = value; }
}
public string HiddenFieldUniqueID
{
get { return (string)ViewState["HiddenFieldUniqueID"]; }
set { ViewState["HiddenFieldUniqueID"] = value; }
}
public string IsRefreshCookieName
{
get { return (string)ViewState["IsRefreshCookieName"]; }
set { ViewState["IsRefreshCookieName"] = value; }
}
private static Control FindControlRecursive(Control Root, string Id)
{
if (Root.ID == Id)
return Root;
foreach (Control Ctl in Root.Controls)
{
Control FoundCtl = FindControlRecursive(Ctl, Id);
if (FoundCtl != null)
return FoundCtl;
}
return null;
}
public bool IsRefreshSubmit
{
get
{
if (IsPostBack)
{
if (Request.Cookies[IsRefreshCookieName].Value != (string)Request[HiddenFieldUniqueID])
{
return false;
}
else
{
return true;
}
}
else
{
return false;
}
}
}
protected override void OnPreRenderComplete(EventArgs e)
{
HiddenField hf = (HiddenField)FindControlRecursive(Page, HiddenFieldID);
Response.Cookies.Add(new HttpCookie(IsRefreshCookieName, hf.Value));
base.OnPreRenderComplete(e);
}
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
}
protected override void OnPreLoad(EventArgs e)
{
if (!IsPostBack)
{
HiddenFieldID = Guid.NewGuid().ToString().Replace("-", "");
IsRefreshCookieName = Guid.NewGuid().ToString().Replace("-", "");
}
HiddenField hf = new HiddenField();
hf.ID = HiddenFieldID;
hf.ClientIDMode = System.Web.UI.ClientIDMode.Static;
Form.Controls.Add(hf);
HiddenFieldUniqueID = hf.UniqueID;
string script = "document.getElementByIdx_x('" + HiddenFieldID + "').value=Math.random()*1000;";
Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), Guid.NewGuid().ToString(), script);
if (!IsRefreshSubmit)
{
Response.Write("Normal Submit");
}
else
{
Server.Transfer(HttpContext.Current.Request.RawUrl);
}
base.OnPreLoad(e);
}
来源:
http://www.cnblogs.com/fmyuan2000
http://blog.sina.com.cn/s/blog_88469758010140so.html