Page_Load() 触发时未处理 Cookie

Cookie not being handled when Page_Load() fires

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

代码如下:

//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。我不知道为什么会这样。任何帮助都会有所帮助。

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

简而言之:如果您在响应中设置了 cookie,则在下一次请求之前无法查询 cookie。

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

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