0

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

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

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

4

1 回答 1

0

不要忘记使用以下命令保存 cookie Response.Cookies.Add

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 的值设置面板的可见性(可见性是falseID 是否与 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"]);
    }
}
于 2013-01-29T21:04:44.977 回答