2013-09-30 5 views
0

여기에 문제가 있습니다. 먼저 문제를 설명 할 코드를 복사합니다. 그래서 페이지로드사용자 정의 쿠키 만들기

protected void Page_Load(object sender, EventArgs e) 
{ 

    CheckIfCookieExists(); 

} 

bool CheckIfCookieExists() 
{ 

    HttpCookie cookie = new HttpCookie("accpetedCookie"); 
    cookie.Values.Add("username", "user"); 
    cookie.Expires = DateTime.Now.AddYears(1); 
    Response.Cookies.Add(cookie); 

    HttpCookie myCookie = Request.Cookies["accpetedCookie"]; 
    if (myCookie == null) 
    { 
     return false; 

    } 
    if (!string.IsNullOrEmpty(myCookie.Values["username"])) 
    { 
     return true; 

    } 
    else 
    { 
     return false; 
    } 

} 
protected void OKButton_Click(object sender, EventArgs e) 
{ 
    if (!CheckIfCookieExists()) 
    { 
     pnlDialog.Visible = true; 
    } 
    else 
    { 
     pnlDialog.Visible = false; 
    } 
} 

이 패널이며, 클릭 예는 OKButton로 이동하는 경우 쿠키를 허용 않으며, 쿠키가 브라우저에 저장 한 후 (내가 자원을 볼 수 있습니다) 때 내가 다른 클릭 클라이언트 요청 같은 사이트의 페이지를 열면 패널이 나타나서 쿠키를 묻습니다. 이것은 HTML 측면입니다.

<div id="dialog-content"> 
    <asp:Panel ID="pnlDialog" title="Cookies policy" runat="server"> 
     <div id="dialog"> 
     <p> 
      If you agree to accept cookies click Yes, otherwise click No!</p> 
     <div class="popup-btn-content"> 
      <div class="popup-ok-btn"> 
       <asp:Button runat="server" Text="Yes" ID="OKButton" onclick="OKButton_Click" 
        style="height: 26px" /></div> 
      <div class="popup-exit-btn"> 
       <asp:Button runat="server" Text="No" ID="ExitButton" 
        onclick="ExitButton_Click" OnClientClick="return hidePanel()" /></div> 
     </div> </div> 
    </asp:Panel> 
    </div> 
+0

"문제가 무엇인지 설명해 드리겠습니다"에 대한 부분을 추가 했습니까? 귀하의 게시물에 어떤 질문이나 문제도 보이지 않습니다. (코드는 Response에 먼저 쿠키를 추가하기 때문에 역순으로 요청에 자동으로 복사되며, 항상 존재할 쿠키 존재 여부를 확인하는 것보다 유의하십시오.) –

답변

0

이처럼를 Page_Load 코드 주위에 !IsPostBack()을 넣어보십시오 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack()) 
     CheckIfCookieExists(); 
} 

난 당신이/설정하면 비 포스트 백에 쿠키를 확인하는 것이 생각, 쿠키가 남아 있어야한다.