每个按钮的增量数量单击C#ASP.NET

时间:2012-04-01 21:24:40

标签: c# asp.net visual-studio increment

  

可能重复:   Button click event doesn't work properly

我尝试在默认页面上为每次点击增加一个int。 Int=0。它最多只能达到1.我应该怎样做才能增加每次点击的数量?

public partial class _Default : System.Web.UI.Page
{
    private int speed = 0;

    public int Speed
    {
        get { return speed; }  // Getter
        set { speed = value; } // Setter
    }

    public void accelerate()
    {
        //speed++;
        this.Speed = this.Speed + 1;
    }

    public void decelerate()
    {
        // speed--;
        this.Speed = this.Speed - 1;
    }

    public int showspeed()
    {
        return this.Speed;
    }

    //car bmw = new car();
    public void Page_Load(object sender, EventArgs e)
    {
        //datatype objectname = new

       dashboard.Text = Convert.ToString(this.showspeed());
    }

    public void acc_Click(object sender, EventArgs e)
    {
       this.accelerate();
       dashboard.Text = Convert.ToString(this.showspeed());
    }

    public void dec_Click(object sender, EventArgs e)
    {
        this.decelerate();
        this.showspeed();
    }
}

3 个答案:

答案 0 :(得分:2)

您可以使用ViewState来维护回发中的值:

private int Speed
{
   get
   {
       if (ViewState["Speed"] == null)
           ViewState["Speed"] = 0;
       return (int)ViewState["Speed"];
   }
   set { ViewState["Speed"] = value; }
}

答案 1 :(得分:1)

您需要以一种在回发后保留的方式存储结果。我建议使用ViewState,例如:

public int Speed
{
    get { 
        if(ViewState["Speed"] == null) {
             ViewState["Speed"] = 1;
        }
        return Convert.ToInt32(ViewState["Speed"]);
     }

    set { 
         ViewState["Speed"] = value;
    }
}

答案 2 :(得分:1)

因为每次单击按钮时,都会将速度值初始化为0。

HTTP无状态。这意味着它不会像在Windows Forms编程中那样在回发中保留变量值。所以你需要在回发中保持价值。

您可以在页面中使用隐藏元素来存储值,并在每次要对其执行函数时访问该值:

 <asp:HiddenField ID="hdnFileId" runat="server" Value="" />

在页面加载中,您可以读取值并将其加载到变量中。

public void Page_Load(object sender, EventArgs e)
{
    this.speed = ConvertTo.Int32(hdnFileId.Value);
}

Adrianftode's注释,TextBox,Checkbox,单选按钮控件值等控件的数据将在回发时发布到服务器,因为它们在浏览器中呈现为标准HTML表单控件。请参阅 Chapter 4. Working with ASP.NET Server Controls