Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用asp.net和Cookie在每个浏览器会话中显示一次横幅_C#_Asp.net_Webforms - Fatal编程技术网

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

C# 使用asp.net和Cookie在每个浏览器会话中显示一次横幅,c#,asp.net,webforms,C#,Asp.net,Webforms,我只想在每个浏览器会话中显示一次横幅 <asp:Panel ID="Panel1" runat="server"> <img src="path"/> </asp:Panel> 更新:我尝试了Ajay在下面提到的解决方案,但该解决方案无法正常工作,或者在cookie为null时生成错误,或者始终显示横幅 我不确定如何更改逻辑,使横幅在每个浏览器会话中仅显示一个。我尝试了几种方法,但都没有成功。任何其他可能从代码隐藏中起作用的解决方案。您需要更正ShowB

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

 <asp:Panel ID="Panel1" runat="server">
<img src="path"/>
 </asp:Panel>
更新:我尝试了Ajay在下面提到的解决方案,但该解决方案无法正常工作,或者在cookie为null时生成错误,或者始终显示横幅


我不确定如何更改逻辑,使横幅在每个浏览器会话中仅显示一个。我尝试了几种方法,但都没有成功。任何其他可能从代码隐藏中起作用的解决方案。

您需要更正ShowBanner逻辑,当cookie不存在时,请显示其他内容,不要执行相反的操作,也不要在页面加载时每次都添加cookie

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

 <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;
}
}
public void ShowBanner()
{
 HttpCookie BannerCookie = Request.Cookies["ShowBanner"];
 if (BannerCookie != null)
 {
 Panel1.Visible = false;
 }
else{
Panel1.Visible = true;
}
}
页面加载时仅在不存在cookie时添加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;
    }

您在哪里添加cookie作为响应:response.Cookies.Addbannercookie?很抱歉错过了这一部分。。。复制时..我将立即更新它。我正在页面加载时设置cookie的值,当我显示横幅时,我将cookie重置为空值。。。。但我不能按要求工作。逻辑上我做错了什么。请检查我答案中的showbanner代码。这给了我一个错误,无法在此范围内声明局部变量。。。。。。对于这行代码,HttpCookie BannerCookie=new HttpCookieShowBanner;在页面加载部分代码编辑代码时,无需在ShowBanner中再次声明HttpCookie,但错误是您提到的代码的第二部分。。。不是showbanner部分错误描述无法在此范围内声明名为“BannerCookie”的局部变量,因为它将赋予“BannerCookie”不同的含义,后者已在“父级或当前”范围内用于表示其他内容