如何清除/更改aspx页面中的查询字符串
本文关键字:字符串 查询 aspx 更改 何清除 清除 | 更新日期: 2023-09-27 18:01:12
我有两页1.a.aspx和2.b.aspx我将查询字符串从"b.aspx?save=success"传递到.aspx。在.aspx的页面加载中,我有以下代码:
Page_Load()
{
if(!Postback)
{
if (Request.QueryString["save"] != null)
{
noDataFound.InnerHtml = "operation success";
}
}
}
问题:在加载.aspx页面时,我收到消息"操作成功"。这是可以的。但是当我再次刷新页面时,我会得到与"操作成功"相同的消息。如何在页面刷新时不再次显示相同的消息(按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";}
}
注意:只有在单击按钮或类似按钮触发ASP.NET回发操作时,才会在刷新时设置IsPostback
您可以做的另一件事是设置会话变量,然后必须显示"操作成功"(可能是您在另一个Page
.中确定的(
// other page
Session["showSaveMessage"] = true;
// this page
if (Session["showSaveMessage"] == true)
{
// show message
Session["showSaveMessage"] = false;
}
第三种选择是移动客户端。在页面加载时创建一个javascript操作。当一个特定的部分被添加到查询字符串(#showmessage
(中时,您可以捕捉到它并显示消息(How to get the value from the get parameters?(。
然后通过将url设置为剥离版本,重定向到无参数版本(#
(。为此设置window.location.href
或window.location.search
(这不会导致对Web服务器的调用,因为它都是客户端(。
这避开了第一个解决方案的缺点,但引入了更多的代码客户端。幸运的是,ASP.NET MVC对此有一些机制。不幸的是,ASP.NET Web窗体没有这些功能。