2009-06-11 5 views
0

私はこれを理解するためにいくつかの問題を抱えています。クッキーはリフレッシュ時にのみ表示されますか?

私はクッキーを設定し、ASP.NET + C#を使用してページに値を表示しようとしています。ここ

は私のコードです:

protected void lbChangeToSmall_Click(object sender, EventArgs e) 
     { 
      Response.Cookies["fontSize"].Value = "small"; 
     } 

<asp:LinkButton runat="server" id="lbChangeToSmall" Text="A" CssClass="txt-sm" OnClick="lbChangeToSmall_Click"></asp:LinkButton> 

そして、私はボタンをクリックすると、最終的

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       Response.Write(Request.Cookies["fontSize"].Value); 
      } 

     } 

、何もページに表示されていないが、クッキー実際に設定されます。ページを更新すると、Cookieが表示されます。

したがって、クッキーは正しく設定されているようですが、アプリケーションはすぐにそれを読み取ることができません。

私は、if(ポストバック)を取り除くことを試みた:

protected void Page_Load(object sender, EventArgs e) 
     { 
       Response.Write(Request.Cookies["virgilFontSize"].Value); 
     } 

が、それは事を変えませんでした。

私は間違っていますか?

ありがとうございます!

答えて

4

lblChangeToSmall_Clickイベントは、Page_Loadイベントの後に発生します。したがって、Cookieの書き込みは、後続のポストバックまでリクエストで使用できなくなります。

これはすぐにでも利用できます。

+0

ああ、私は、メソッドを呼び出し、ページをリフレッシュして、page_loadを呼び出すと思った。これを修正する方法はありますか? – marcgg

+0

クライアントのフォントサイズをJavascriptで設定します。または、別のページにリダイレクトします。あるいは、実際にはpage_loadがクッキーと何をする必要があるかを見て、それをclickイベントからも行います。 –

+0

ご協力いただきありがとうございます!ページに別のリダイレクトを行うにはどうすればよいですか?これらのボタンはマスターページにあるので、リダイレクトできないページはわかりません。私は ""にリダイレクトできないと思う。 「?」にリダイレクトする私をurl.com/page.aspx/に送りますか?それは壊れます。 – marcgg

0

リクエストにはまだCookieがありません。 の応答がそれらを設定した後、2度目にしかそれらを持ちません。したがって、あなたのコードはRequest.Cookies"fontSize"というエントリを持っていない可能性を処理しなければならない可能性があります。例:

HttpCookie cookie = Request.Cookies.Get("fontSize"); 
// Check if cookie exists in the current request. 
if (cookie == null) 
{ 
    Response.Write("Defaulting to 'small'."); 
} 
else 
{ 
    Response.Write(Request.Cookies["fontSize"].Value); 
) 
+0

どうすれば変更できますか? – marcgg

+0

これはHTTP標準の一部です。現実的に変更することはできません。私の答えを編集して、その答えをどうやって表示するか... –

関連する問題