我看到一些代码使用Viewstate来保持用户请求之间的状态,下面是使用按钮递增文本框输入中的数字的代码:
public partial class WebForm1 : System.Web.UI.Page
{
int ClicksCount = 1;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TextBox1.Text = "0";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if(ViewState["Clicks"] != null)
{
ClicksCount = (int)ViewState["Clicks"] + 1;
}
TextBox1.Text = ClicksCount.ToString(); ;
ViewState["Clicks"] = ClicksCount;
}
}
但我不需要使用Viewstate来实现相同的目标,而且更简单,这是我的代码:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TextBox1.Text = "0";
}
}
protected void Button1_Click(object sender, EventArgs e)
{
int i = Int32.Parse(TextBox1.Text);
i++;
TextBox1.Text = i.ToString();
}
}
所以我的代码出了什么问题
答案 0 :(得分:1)
您的代码没有任何问题:ASP.NET控件的内容(在您的示例中为 TextBox1 )已自动集成在 ViewState 中,因此无需手动输入。您可以直接使用ViewState来存储任何不属于您的设计组件的内容(例如,您希望每次都增加的int变量)。