C# 是否不需要使用Viewstate在asp.net中保留状态?
我看到一些代码使用Viewstate在用户请求之间保持状态,下面是使用按钮在文本框输入中增加数字的代码: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.
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的文本字段由发布的值保留,如下所述:抱歉,我仍然不明白为什么它只在文本框设置为只读时才起作用?当文本框不是只读时,用户输入的值是发布值的一部分,因此被保留。如果它是只读的,则该值不会存储在已发布的值中,因此它会在回发中丢失。