不需要使用Viewstate来保存asp.net中的状态?

时间:2017-06-06 11:57:14

标签: c# asp.net

我看到一些代码使用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();
        }
    }

所以我的代码出了什么问题

1 个答案:

答案 0 :(得分:1)

您的代码没有任何问题:ASP.NET控件的内容(在您的示例中为 TextBox1 )已自动集成在 ViewState 中,因此无需手动输入。您可以直接使用ViewState来存储任何不属于您的设计组件的内容(例如,您希望每次都增加的int变量)。