ASP.NET Page_Load值落后于一个回发

时间:2011-04-12 09:19:02

标签: asp.net

我的一页的Page_Load方法中有一个foreach循环,用于确定是否启用按钮。

代码:

foreach (var class in classes)
{
    for (var i = studentsList.Count - 1; i >= 0; i--)
    {
        if (studentsList[i].Id == class.student_id)
            studenstList.Remove(studentsList[i]);
    }
}
if (studentsList.Count == 0)
{
    button1.Enabled = false;
    button1.Text = "a";
}
else
{
    button1.Enabled = true;
    button1.Text = "b";
}
if (Page.IsPostBack) { return; }

问题:

studentsList.Count的价值落后于回复。如果在循环之后它应该是1,它在下一次回发时只有值1。我已经调试确认是这种情况。

4 个答案:

答案 0 :(得分:0)

您可以将此foreach循环移动到Page_PreLoad方法并尝试一下。

这是ASP.NET页面的生命周期:http://msdn.microsoft.com/en-us/library/ms178472.aspx#lifecycle_events

答案 1 :(得分:0)

我想通过点击页面上的按钮来更新学生列表。

将启用button1的代码放在该按钮的button_click事件上。

答案 2 :(得分:0)

按钮是否按下编辑学生列表?如果是这样,按下按钮的代码将在Page_Load代码之后触发。

答案 3 :(得分:0)

您的问题是您应该等待相应的事件并在该事件处理程序中编写此逻辑。为清楚起见,页面加载比控制事件更早发生。