我有两页 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页面时,我收到消息"操作成功"。这是好的。但是当我再次刷新页面时,我得到的信息与#34;操作成功"相同。如何在页面刷新时不再显示相同的消息(按F5或重新加载)。
答案 0 :(得分:3)
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();
};
答案 1 :(得分:2)
未经测试的解决方案(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;
}
答案 2 :(得分:1)
我能想到的最好的就是使用IsPostback
属性来检查它。
if (!this.IsPostback)
{
// first try
if (Request.QueryString["save"] != null)
{noDataFound.InnerHtml = "operation success";}
}
注意:只有在单击某个按钮或其他类似内容时才会在刷新时设置IsPostback
。
你可以做的另一件事是设置一个Session变量,然后&#39;操作成功&#39;必须显示(可能您在另一个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
(这不会导致对网络服务器的调用,因为它是所有客户端)。
这避免了第一个解决方案的缺点,但引入了更多的代码客户端。幸运的是,ASP.NET MVC有一些机制。不幸的是,ASP.NET Web Forms并没有那些。