将Panel Control的内容存储到Cookie中

时间:2013-01-29 20:57:22

标签: asp.net cookies

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

//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

...问题:页面未保存主面板控件的更改。有人可以提供一些关于我做错的指导吗?

1 个答案:

答案 0 :(得分:0)

不要忘记使用Response.Cookies.Add保存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。)

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