在“edmx”页面中,我有按钮控件,事件“NextButton_Click”用于点击。单击此按钮时,变量“index”不希望更改为“40”和“文本” 变量不想更改为“活动”。这些变量始终处于相同状态,“text”始终等于“start”,“index”始终等于“10”。为什么他们不想改变(指数= 40; text =“active”;)正如我在点击按钮事件方法中写的那样?
public partial class CountriesTowns : System.Web.UI.Page
{
int index = 10;
string text = "start";
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
index = 20;
text = "stop";
}
}
//click next button
protected void NextButton_Click(object sender, EventArgs e)
{
Response.Write(index);
Response.Write(text);
index = 40;
text = "active";
}
答案 0 :(得分:3)
HTTP是无状态的,每个对象(如index
或text
(甚至所有控件)都会在页面生命周期结束时被销毁。因此,它们始终使用默认值进行初始化。
int index = 10;
string text = "start";
您可以使用控件(例如TextBox
或HiddenField
)在回发中保留其值。
但还有其他选择:
Nine Options for Managing Persistent User State in Your ASP.NET Application
答案 1 :(得分:2)
您不会在回发之间保持index
和text
变量的更新状态。因此,由于每个请求都会创建一个CountriesTowns
的新实例,因此会将这些值重新初始化为其默认值。
答案 2 :(得分:1)
每次单击按钮,都会导致所谓的回发。回发不只是运行您的点击代码...它还会重建您的整个页面。要做到这一点,它会创建一个全新的Page类实例,然后在新页面的html完成后立即销毁。它必须这样做,因为你的Page类的原始实例在渲染html时也会被销毁。