我尝试在默认页面上为每次点击增加一个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();
}
}
答案 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 。