使用asp.net和cookie在每次浏览器会话中显示一次横幅

本文关键字:显示 一次 浏览器 net asp cookie 使用 会话 | 更新日期: 2023-09-27 18:11:32

我想在每次浏览器会话中只显示一次横幅。

 <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为空或总是显示横幅。

我不知道如何改变逻辑,使横幅将只显示一个每个浏览器会话。我试了好几种方法,但都没用。任何其他可能在代码后工作的解决方案

使用asp.net和cookie在每次浏览器会话中显示一次横幅

你的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)
}

创建会话变量:

    if(Session["whatever"] == null)
    {
         // show the post
    }
    else
    {
         Session["whatever"] = 0;
    }