[英]How to clear/change the query string in aspx page?
我有兩個頁面1. a.aspx和2. b.aspx我將查詢字符串從“b.aspx?save = success”傳遞給a.aspx。 在a.aspx的Page Load中,我有以下代碼:
Page_Load()
{
if(!Postback)
{
if (Request.QueryString["save"] != null)
{
noDataFound.InnerHtml = "operation success";
}
}
}
問題:在加載a.aspx頁面時,我收到消息“操作成功”。 這是Ok.But當我再次刷新頁面時,我收到與“操作成功”相同的消息。 如何在頁面刷新時不再顯示相同的消息(按F5或重新加載)。
function invokeMeMaster() {
var isPostBack = <%= Page.IsPostBack ? "true" : "false" %> ;
if (!isPostBack) {
/* START */
var query = getQueryParams(document.location.search);
var p = query.save;
if (sessionStorage.hits) {
sessionStorage.hits = Number(sessionStorage.hits) + 1;
} else {
sessionStorage.hits = 1;
}
if (p == "success" && (sessionStorage.hits) % 2 == 0) {
document.getElementById("<%=noDataFound.ClientID %>").innerText = "Testing...........";
}
function getQueryParams(qs) {
qs = qs.split("+").join(" ");
var params = {}, tokens,
re = /[?&]?([^=]+)=([^&]*)/g;
while (tokens = re.exec(qs)) {
params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
}
return params;
}
/* END */
} else {
document.getElementById("<%=noDataFound.ClientID %>").innerText = "";
}
}
window.onload = function () {
invokeMeMaster();
};
未經測試的解決方案(Keeping F5 or Reload of Page in mind)
,可能是你做了類似下面的事情:
if(!IsPostBack)
{
if (Request.QueryString["save"] != null && Session["CheckSuccess"] == null)
{
noDataFound.InnerHtml = "operation success";
Session["CheckSuccess"] = "true";
}
else
noDataFound.InnerHtml = string.Empty;
}
我能想到的最好的就是使用IsPostback
屬性來檢查它。
if (!this.IsPostback)
{
// first try
if (Request.QueryString["save"] != null)
{noDataFound.InnerHtml = "operation success";}
}
注意: IsPostback
未在刷新時設置,僅當單擊按鈕或類似的東西時才會觸發ASP.NET回發操作。
您可以做的另一件事是設置一個Session變量,然后必須顯示'operation successcesful'(可能你在另一個Page
確定了這個)。
// other page
Session["showSaveMessage"] = true;
// this page
if (Session["showSaveMessage"] == true)
{
// show message
Session["showSaveMessage"] = false;
}
第三種選擇是移動此客戶端。 在加載頁面時創建一個javascript操作。 當特定部分添加到查詢字符串( #showmessage
)時,您可以捕獲它並顯示消息( 如何從GET參數中獲取值? )。
然后通過將URL設置為剝離版本重定向到無參數版本( #
)。 設置window.location.href
或window.location.search
(這不會導致對Web服務器的調用,因為它是所有客戶端)。
這避免了第一種解決方案的缺點,但引入了更多的代碼客戶端。 幸運的是,ASP.NET MVC有一些機制。 不幸的是,ASP.NET Web Forms沒有這些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.