行。我这样问这个问题: 通常,不是页面循环:
的Page_Load
onclick和/或提交处理程序
的Page_Load。
如果是这样,在onclick / submit处理程序期间页面上的控件值应该是多少?用户选择的值,或page_load?
中的值答案 0 :(得分:2)
页面加载事件在控件事件之前触发。因此,如果更改页面加载事件中的值,则这些更改将覆盖用户选择的任何值,并且在控件事件中,您将看到在页面加载中设置的值。
如果你需要在页面加载事件中进行一些初始化,但只有当有人第一次进入页面时,你可以使用IsPostBack:
if(!IsPostBack)
{
//do initialization that you only want to happen when someone
//comes to the page for the first time
}
这是一个很好的overview of the ASP.NET page lifecycle,其中包含更多细节。
以下是一个简化的示例序列:
答案 1 :(得分:0)
这取决于您是否检查该页面是否为回发。
考虑以下示例 - 系统用户有机会在webform上更改其名称。页面加载时,用户名称将显示在文本框中的页面上。然后,用户可以单击按钮以保存其名称。
在此示例中,假设名为“John Smith”的用户将其用户名错误地存储为“John Jones”。然后他决定通过在用户名字段中输入“John Smith”来更改用户名。
protected void Page_Load(object sender, EventArgs e)
{
this.txtName.Text = "John Jones";
}
protected void SaveDetails(object sender, EventArgs e)
{
string username = this.txtName.Text;
}
在这种情况下,您可能希望字符串用户名现在设置为“John Smith”。 但是,当页面在回发时再次加载时,它实际上会重置为“John Jones”。
因此我们必须检查该页面是否为回发。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostback)
{
this.txtName.Text = "John Jones";
}
}
现在,用户名字符串将按照用户的意图设置为“John Smith”。