2

在“edmx”页面中,我有带有事件“NextButton_Click”的按钮控件进行点击。当我单击此按钮时,变量“index”不想更改为“40”,“text”变量不想更改为“active”。这些变量总是处于相同的状态,“text”总是等于“start”,“index”总是等于“10”。为什么他们不想改变 (index = 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";
    }
4

3 回答 3

3

HTTP 是无状态的,像您的 indexor text(甚至所有控件)这样的每个对象都会在页面生命周期结束时被销毁。所以它们总是用它们的默认值初始化。

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

您可以使用控件(fe aTextBox或 a HiddenField)在回发中保持其值。

但还有其他选择:

在 ASP.NET 应用程序中管理持久用户状态的九个选项

于 2013-02-05T16:06:46.870 回答
2

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

于 2013-02-05T16:06:21.533 回答
1

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

于 2013-02-05T16:07:25.893 回答