-4

每当我反复单击 Button1 时,Literal1 中的文本都不会增加。你能告诉我原因吗?

预期:每次单击按钮后,文本字段中的值都会增加。

当前结果:值始终显示 1。

public partial class d1 : System.Web.UI.Page
{
int c;
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        c = 1;
        Literal1.Text = c.ToString();
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    c=c+1;
    Literal1.Text = c.ToString();
}
}
4

1 回答 1

1

原因是那c是那个类的一个实例变量。并且每次回发到服务器都会创建一个新的类实例。因此在每次回发时c都被初始化。0如果您想c在该类的单个实例之外持久化,则需要将其存储在某个地方。会话、应用程序、数据库等(具体在哪里取决于在什么情况下c应该保留的值。我猜这只是测试代码以了解功能,因此您可以尝试以上所有方法并查看它们有何不同。)

有关这方面的更多信息,您需要阅读ASP.NET Page Life Cycle

从本质上讲,“全局”并不能c非常准确地描述为一个变量。它的范围仅限于该类,更具体地说,仅限于该类的任何一个实例。

于 2013-09-25T16:51:18.330 回答