Web应用程序按钮按下传输数据

时间:2012-03-01 09:25:37

标签: c# asp.net

我正在编写我的第一个C#Web应用程序,并且在如何更新我班级中声明的初始值方面存在问题。

一个简单的例子来说明问题:

namespace WebApplication1
{
    public partial class _Default : System.Web.UI.Page
    {
        public int x = 1;

        public void Page_Load(object sender, EventArgs e)
        {
            LabelLoadOnly.Text = x.ToString();
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            LabelButton1.Text = x.ToString();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            int y = x + 1;
            LabelButton2.Text = y.ToString();
            x = y;
        }
    }
}

最初,x = 1.当按下按钮2时,我想将x增加1.这可以在第一个按钮按下但不是第二个按钮...

如何更新_Default.x?

2 个答案:

答案 0 :(得分:2)

使用类似

的内容
 LabelButton2.Text = int.Parse(labelButton2.Text)+1;

您的LabelLoadOnly也应受

保护
if(!IsPostback){
...

答案 1 :(得分:0)

问题在于,在ASP.Net应用程序中,该页面实例的运行时间足以满足单个请求的需求。当回发发生时(单击按钮),您将获得一个新的实例,x重置为1.

围绕它的方式是ViewState和/或Session,具体取决于您希望保留该值的时间长度。 使用静态变量:它们在调试时似乎有效,但所有用户将共享相同的值 - 通常不是您想要的!