变量状态

时间:2013-02-05 16:03:54

标签: c# asp.net

在“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";
    }

3 个答案:

答案 0 :(得分:3)

HTTP是无状态的,每个对象(如indextext(甚至所有控件)都会在页面生命周期结束时被销毁。因此,它们始终使用默认值进行初始化。

int index = 10;
string text = "start";

您可以使用控件(例如TextBoxHiddenField)在回发中保留其值。

但还有其他选择:

Nine Options for Managing Persistent User State in Your ASP.NET Application

答案 1 :(得分:2)

您不会在回发之间保持indextext变量的更新状​​态。因此,由于每个请求都会创建一个CountriesTowns的新实例,因此会将这些值重新初始化为其默认值。

答案 2 :(得分:1)

每次单击按钮,都会导致所谓的回发。回发不只是运行您的点击代码...它还会重建您的整个页面。要做到这一点,它会创建一个全新的Page类实例,然后在新页面的html完成后立即销毁。它必须这样做,因为你的Page类的原始实例在渲染html时也会被销毁。