好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > asp.net防止刷新時重復提交(可禁用工具條刷新按鈕)

asp.net防止刷新時重復提交(可禁用工具條刷新按鈕)

熱門標簽:百度ai地圖標注 同安公安400電話怎么申請流程 玉林市機器人外呼系統哪家好 電話機器人軟件銷售工作 南陽外呼系統定制化 預測式外呼系統使用說明 合肥電銷外呼系統哪家公司做的好 申請400電話手續 蘋果手機凱立德地圖標注
前段時間遇到了需要禁用刷新的需求,f5按鈕就不說了,簡單的js就能把它禁用,但是工具條上的刷新按鈕卻傻傻干不掉。

如果簡單的在刷新時重新加載畫面,通過window.location.href="url"可以很容易的實現,但是需求是要求在刷新時什么都不做,保留畫面的狀態,這下子可就復雜化了。

asp.net中分辨請求是重新請求還是通過刷新按鈕再次請求不是很方便,為了實現這個效果,試過了很多的方式,一下面的兩種為例
1.
復制代碼 代碼如下:

private bool pageRefreshed = false; //頁面是否刷新提交
private bool refreshState = false; //ViewState中暫存的狀態

然后重寫Page的LoadViewState與SaveViewState方法:
復制代碼 代碼如下:

protected override void LoadViewState(object savedState)
{
object[] states = (object[])savedState;
base.LoadViewState(states[0]);
refreshState = (bool)states[1];
if(Session["__PAGE_REFRESHED"] == null)
pageRefreshed = false;
else
pageRefreshed = refreshState != (bool)Session["__PAGE_REFRESHED"];
}
protected override object SaveViewState()
{
Session["__PAGE_REFRESHED"] = !refreshState;
object[] states = new object[2];
states[0] = base.SaveViewState();
states[1] = !refreshState;
return states;
}

復制代碼 代碼如下:

private void Button1_Click(object sender, EventArgs e)
{
if (pageRefreshed )
{
label.Text="this is refreshed function";
}
else
{
label.Text="this is new request function";
}
}

這種方法雖然能夠實現,但是在某些請款下不適應。如果畫面上同時存在文本框和按鈕式,設置按鈕的autopostback="True"時,在修改完文本框的值,直接點擊按鈕(在文本框沒有失去焦點時,直接點擊按鈕),這時的執行順序是textchanged→textchanged→buttonclick,在第一次textchanged時,就把狀態已經變成了true,按鈕的不能執行。

2.codeproject找到了另外一種解決方法
這種方式能夠準確的判斷是否是通過瀏覽器的刷新按鈕進行的請求,而且使用起來也非常簡單!
1.引用dll,修改配置文件
在配置文件中添加modules
復制代碼 代碼如下:

system.web>
httpModules>
add name="RefreshModule"
type="RefreshModule.Module, RefreshModule"/>
/httpModules>
/system.web>

PS:wbapplication的情況下需要改成在system.webServer的modules的節點下追加modules
2.定義刷新時的行為
復制代碼 代碼如下:

[Refresh()]
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack !RefereshHelper.IsPageRefreshed)
{
// do some work with the submitted date
}
else
{
// do some work when the page is loaded with the GET method
}
}
}

RefereshHelper.IsPageRefreshed這個參數就是用來判斷是否是通過瀏覽器的書刷新按鈕進行的請求。其他的行為行為控制參照原文。PS:codeproject真是個不過的地方,很多問題都是通過它來解決的其他的方式不一一列舉,列舉的第二種方式可以說簡單易用,所有的實現都已經為我們封裝好了,只需要簡單的調用。
您可能感興趣的文章:
  • ASP.NET中為GridView添加刪除提示框的方法
  • asp.net表單提交時防重復提交并執行前臺的JS驗證
  • Asp.Net防止刷新重復提交數據的辦法
  • asp.net 處理F5刷新頁面重復提交頁面的一個思路
  • asp.net 防止用戶通過后退按鈕重復提交表單
  • Asp.Net中避免重復提交和彈出提示框的實例代碼

標簽:南京 臺州 揚州 南京 淄博 南昌 嘉興 海南

巨人網絡通訊聲明:本文標題《asp.net防止刷新時重復提交(可禁用工具條刷新按鈕)》,本文關鍵詞  asp.net,防止,刷新,時,重復,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《asp.net防止刷新時重復提交(可禁用工具條刷新按鈕)》相關的同類信息!
  • 本頁收集關于asp.net防止刷新時重復提交(可禁用工具條刷新按鈕)的相關信息資訊供網民參考!
  • 推薦文章