0

ユーザーが表示/非表示ボタンを使用してコンテンツセクションを表示または非表示にできるページを作成しました。表示/非表示ボタンをクリックすると、選択したボタンに基づいてネストされたパネル/コンテンツが表示または非表示になり、ユーザーは保存ボタンをクリックしてページを保存できます。問題-(エラーなし)が、ページがユーザーの変更をCookieに保存していません。このページには、1つのメインパネルコントロールにネストされた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 の値に応じてパネルの可視性が設定されます (可視性はfalse、ID が 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 に答える