C# 是否不需要使用Viewstate在asp.net中保留状态?

C# 是否不需要使用Viewstate在asp.net中保留状态?,c#,asp.net,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.

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

因此,我的代码有什么问题?

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

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

您的问题是什么@你的问题是什么@slowjams感谢您的回答,但是我已经为textBox设置了EnableViewState=“False”,为什么它仍然保留值?@slowjams:textBox的文本字段由发布的值保留,如下所述:对不起,我仍然不明白为什么它只在文本框设置为只读时才起作用?当文本框不是只读时,用户输入的值是发布值的一部分,因此被保留。如果它是只读的,则值不会存储在发布的值中,因此会在回发中丢失。谢谢您的回答,但我已为textBox设置了EnableViewState=“False”,为什么它仍然保留值?@slowjams:textBox的文本字段由发布的值保留,如下所述:抱歉,我仍然不明白为什么它只在文本框设置为只读时才起作用?当文本框不是只读时,用户输入的值是发布值的一部分,因此被保留。如果它是只读的,则该值不会存储在已发布的值中,因此它会在回发中丢失。