我想在每个浏览器会话中只展示一次横幅。
<asp:Panel ID="Panel1" runat="server">
<img src="path"/>
</asp:Panel>
我想使用代码隐藏文件中的cookie实现此目的。
我的代码在下面,但横幅一直显示,我如何以下注方式实现此目标
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Set Banner Cookie
HttpCookie BannerCookie = new HttpCookie("ShowBanner");
BannerCookie.Value = "YES";
Response.Cookies.Add(bannercookie)
Panel1.Visible = False;
//Do Somthing...
ShowPageDetails();
ShowBanner();
}
else
{
//Do Somthing
Panel1.Visible = False;
ShowPageDetails();
ShowBanner();
}
}
public void ShowBanner()
{
HttpCookie BannerCookie = Request.Cookies["ShowBanner"];
if (BannerCookie != null)
{
Panel1.Visible = True;
BannerCookie.Value = null;
Response.Cookies.Add(BannerCookie);
}
else
{
Panel1.Visible = false;
}
}
更新:我尝试了Ajay
下面提到的解决方案,但是当cookie为null或始终显示横幅时,它无法正常生成错误。
我不确定如何更改逻辑,以便横幅每个浏览器会话只显示一个。我尝试了几种方法,但没有让它发挥作用。任何其他可能来自代码隐藏的解决方案。
答案 0 :(得分:0)
你的ShowBanner()逻辑需要纠正,当cookie不存在时显示别的你不做反向,也是在页面加载时不要每次都添加cookie
我想在每个浏览器会话中只展示一次横幅。
我想使用代码隐藏文件中的cookie实现此目的。
我的代码在下面,但横幅一直显示,我如何以下注方式实现此目标
public void ShowBanner()
{
HttpCookie BannerCookie = Request.Cookies["ShowBanner"];
if (BannerCookie != null)
{
Panel1.Visible = false;
}
else{
Panel1.Visible = true;
}
}
在页面加载时,仅在不存在的情况下添加cookie
HttpCookie BannerCookie = Request.Cookies["ShowBanner"];
if (BannerCookie == null)
{
BannerCookie = new HttpCookie("ShowBanner");
BannerCookie.Value = "YES";
Response.Cookies.Add(bannercookie)
}
答案 1 :(得分:0)
创建会话变量:
if(Session["whatever"] == null)
{
// show the post
}
else
{
Session["whatever"] = 0;
}