Asp.net 将面板控件的内容存储到Cookie中

Asp.net 将面板控件的内容存储到Cookie中,asp.net,cookies,Asp.net,Cookies,我创建了一个页面,允许用户通过显示/隐藏按钮显示或隐藏其内容部分。单击“显示/隐藏”按钮后,嵌套面板/内容将根据所选按钮显示或不显示,然后用户可以通过单击“保存”按钮保存页面。问题-(没有错误)但是,页面没有将用户更改保存到cookie中。该页包含嵌套在一个主面板控件中的两个面板控件 //Front End code - The save button <asp:Button ID="savButton" runat="server" Text="Save" onclick="savBut

我创建了一个页面,允许用户通过显示/隐藏按钮显示或隐藏其内容部分。单击“显示/隐藏”按钮后,嵌套面板/内容将根据所选按钮显示或不显示,然后用户可以通过单击“保存”按钮保存页面。问题-(没有错误)但是,页面没有将用户更改保存到cookie中。该页包含嵌套在一个主面板控件中的两个面板控件

//Front End code - The save button
<asp:Button ID="savButton" runat="server" Text="Save" onclick="savButton_Click" />

//psuedo code - The Panels
<asp:Panel ID="pnlSaveContent" runat="server"> //main Panel control 
     <asp:Panel ID="pnlWeatherAppCtrl" runat="server"> // panel content 1
         <div>Weather App Content</div>
     </Panel>
     <asp:Panel ID="StockAppCtrl" runat="server">   // panel content 2
           <div>Stock App Content</div>
      </Panel>
</Panel>

//Back-end code:
    protected void Page_Load(object sender, EventArgs e)
     {
        //get the cookie       
        if ((Request.Cookies["preferences"] != null))
        {
            pnlSaveContent.ID = Request.Cookies["preferences"]["savePg"];
        }
     }

 //set cookie
    protected void savButton_Click(object sender, EventArgs e)
    {
        Response.Cookies["preferences"]["savePg"] = pnlSaveContent.ID;
        Response.Cookies["preferences"].Expires = DateTime.MaxValue;
    }

 //end code
//前端代码-保存按钮
//psuedo代码-面板
//主面板控制
//小组内容1
天气应用程序内容
//小组内容2
股票应用程序内容
//后端代码:
受保护的无效页面加载(对象发送方、事件参数e)
{
//拿饼干
if((Request.Cookies[“首选项”!=null))
{
pnlSaveContent.ID=Request.Cookies[“首选项”][“savePg”];
}
}
//设置cookie
受保护的void savButton\u单击(对象发送者,事件参数e)
{
响应.Cookies[“首选项”][“savePg”]=pnlSaveContent.ID;
Response.Cookies[“preferences”].Expires=DateTime.MaxValue;
}
//结束代码

…问题:页面未保存主面板控件的更改。是否有人能就我做错了什么提供一些指导?

不要忘记用
Response.Cookies保存cookie。添加

protected void savButton_Click(object sender, EventArgs e)
{
    HttpCookie c = Request.Cookies["preferences"] != null ? 
        Request.Cookies["preferences"] :
        new HttpCookie("preferences");
    c.Values["savePg"] = pnlSaveContent.ID;
    c.Expires = DateTime.MaxValue;
    Response.Cookies.Add(c);
}
至于你的评论。。。我不太清楚你想做什么,但也许是这个。这将根据cookie的值设置面板的可见性(如果ID与cookie的值匹配,则可见性为
false


感谢您的快速响应,…是否必须在“页面加载”块中检索cookie?我将上述代码放在“保存”按钮上,当我单击“隐藏”按钮时,相应的内容面板将进入不可见状态,但一旦我离开页面并返回,相同的内容面板又出现了。@user1724708更新了答案,以显示如何根据cookie值设置面板的可见性。@user1724708如果有更多问题,可能需要创建新问题。此答案显示了如何通过适当地保存cookie并基于该cookie值设置面板可见性来解决问题。
protected void Page_Load(object sender, EventArgs e)
{
    //get the cookie       
    if ((Request.Cookies["preferences"] != null))
    {
        pnlSaveContent.Visible = !(pnlSaveContent.ID == Request.Cookies["preferences"]["savePg"]);
    }
}