2015-02-24 105 views
0

我的问题是,当我按下我的按钮(这会导致回发)时,click_event中产生的cookie没有在我调用Page_Load的方法中处理。当Page_Load()被触发时cookie没有被处理

下面是代码:

//Page_Load 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!Context.User.Identity.IsAuthenticated) 
    { 
     FormsAuthentication.RedirectToLoginPage(); 
    } 
    loadCookies(); 
} 
//loadCookies 
public void loadCookies() 
{ 
    for (int i = 0; i < 40; i++) 
    { 
     if(Request.Cookies["FiscaleTable" + i.ToString()] != null){ 
      TableRow row = new TableRow(); 
      for (int i2 = 0; i2 < 10; i2++) 
      { 
       TableCell cell = new TableCell(); 
       cell.Text = Request.Cookies["FiscaleTable" + i.ToString()][i2.ToString()]; 
       row.Cells.Add(cell); 
      } 
      FiscaleEenhedenTable.Rows.Add(row); 
     } 
    } 
} 
//Button_Click 
public void makeFiscaleEenhedenCookie(object sender, EventArgs e) 
{ 
    ContentPlaceHolder Content; 
    Content = (ContentPlaceHolder)Master.FindControl("MainContent"); 
    HttpCookie FiscaleEenhedenCookie = new HttpCookie("FiscaleTable" + (FiscaleEenhedenTable.Rows.Count - 1).ToString()); 
    FiscaleEenhedenCookie.Expires = DateTime.Now.AddDays(1d); 
    for (int i2 = 0; i2 < 10; i2++) 
    { 
     TextBox temp = (TextBox)Content.FindControl("FiscaleUnitTextBox" + (i2 + 1).ToString()); 
     FiscaleEenhedenCookie[i2.ToString()] = temp.Text; 
    } 
    Response.Cookies.Add(FiscaleEenhedenCookie); 
} 
//Button 
<asp:Button ID="FiscaleAddButton" runat="server" CommandName="FiAdd" Text="Toevoegen" ClientIDMode="Static" OnClick="makeFiscaleEenhedenCookie"/> 

只要我调用另一个回发或刷新的cookie被处理的页面。我不知道为什么会发生这种情况。任何帮助将是有益的。

+0

@TusharGupta你的意思是在if语句中吗?因为这与这个问题无关。重定向工作正常。 – 2015-02-24 09:54:14

+0

M抱歉我的不好...我的理解不同 – Tushar 2015-02-24 09:57:24

回答

2

这是预期的行为。点击按钮后,回发完成。 Page_Load被执行,然后makeFisicalEenhedenCookie被执行,页面呈现并且它被发送给用户以及你在响应中设置的cookie。当另一个回发完成时,用户将cookie发送到服务器,您可以处理它。这是asp.net页面生命周期的基本流程。

几句话:如果你在一个响应设置一个cookie无法查询的cookie,直到下一个请求。

+0

任何想法如何解决我的问题?我试图在'click_event'中放置'loadCookies()',但这似乎会导致行的问题。 – 2015-02-24 10:14:50

+0

没有“问题”来解决。您需要了解更多关于http协议,asp.net以及如何使用cookie的信息。你正在靠着自己建造的墙壁前进,而且周围没有简单的方法。 – jlvaquero 2015-02-24 10:35:59

1

这是因为控制事件是在加载后处理的。 有关完整的生命周期,请参阅https://msdn.microsoft.com/en-us/library/ms178472.aspx

因此,您在页面加载事件中的代码在点击事件之前触发。

+0

Page_LoadComplete仍然不起作用。请记住,cookie尚未发送给用户。 – jlvaquero 2015-02-24 10:35:01

+0

你说得对。没有想到通过。我会删除我的答案的那部分 – 2015-02-24 10:41:34

相关问题