点击按钮增加ASP.net中的变量

时间:2009-10-10 16:40:00

标签: asp.net variables

我是asp.net的新手。我正在使用VB.net创建一个ASP.net网站。所以这是我的问题

Dim myCounter as Integer = 0

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles Button1.Click

        myCounter =  myCounter + 1

        Label1.Text = myCounter.ToString()

end Sub

正如预期的那样,每次单击按钮时,我总是将标签文本设为0。如何创建全局变量并增加它。

7 个答案:

答案 0 :(得分:4)

每次页面回发时,它基本上都是从头开始 - 例如,任何初始化为0的内容都将为零。这是因为服务器对页面的最后一次运行一无所知 - 它只知道你点击了一个向该页面提交表单的按钮,因此它创建了另一个页面实例并重新开始。

如果您需要在回发中保留一个值,标准方法是使用ViewState

Public Property MyCounter() As Integer
    Get
        Dim val As Object = ViewState("MyCounter")
        Return If(val IsNot Nothing, CInt(val), 0)
    End Get
    Set(ByVal value As Integer)
        ViewState("MyCounter") = value
    End Set
End Property

也可以使用Session,它将在所有页面上保持值并在用户会话的生命周期内保持请求。为此,您可以使用上面的相同示例,将ViewState替换为Session

答案 1 :(得分:2)

将此代码放入按钮点击事件

int count=0;

count++;

ViewState["count"] = Convert.ToInt32(ViewState["count"]) + count;

Label1.Text = ViewState["count"].ToString();

答案 2 :(得分:1)

@Rex M建议使用Viewstate很好。

如果计数器不是敏感信息或者你担心有人篡改的东西,那么这里有一个更简单的想法:

您还可以使用<asp:HiddenField>并将值存储在那里。然后它会在回发之间保持不变,你可以每次都增加它..

答案 3 :(得分:1)

她是另一种不使用隐藏字段,视图状态,会话或缓存的方法

可能不是非常“安全”的东西,但可能会节省你一些时间。

假设初始Label1.Text = 0

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles Button1.Click

        Label1.Text = (Integer.Parse(Label1.Text) + 1).ToString()

end Sub

答案 4 :(得分:0)

每次请求都会重新创建您的页面类...所以myCounter下次不会存在。

你可以

  • 让myCounter静态(不是一个好主意)
  • 将其放入应用程序,会话或缓存集合中

取决于你想要做什么

答案 5 :(得分:0)

您可以使用查看次数:---

button_click事件的代码..

ViewState["count"] = Convert.ToInt32(ViewState["count"])+1;
Label2.Text = "This button has been clicked " + ViewState["count"].ToString() + " times";

答案 6 :(得分:0)

   protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ViewState["Count"] = 0;
        }

    }

    protected void btnCount_Click(object sender, EventArgs e)
    {

        ViewState["Count"] = (int)(ViewState["Count"]) + 1;
        lblCount.Text = "Page Visited " +ViewState["Count"].ToString() +" times !";
        //Response.Write(ViewState["Count"].ToString());

    }