ViewState 在 post 返回 ASP.NET C# 上不起作用

ViewState doesn't work on post back ASP.NET C#

我正在尝试为值字段创建一个简单的 "recover" 按钮。 由于某种原因,存储在 ViewState 中的字符串不显示。我遵循了一个教程,所以我真的不知道我做错了什么,我还在网上搜索了答案,许多人的主要问题是他们没有在页面中启用 ViewState,而我也没有启用我添加了它(但按钮仍然不起作用)。至于我写代码的方式,或者我如何使用ViewState,我找不到问题。 任何帮助将不胜感激。

这就是我在 Contact.aspx 页面中的内容:

<%@ Page Title="" Language="C#" EnableViewState="true"/*...*/

<asp:TextBox class="form-control" id="usr" runat="server"/>

<asp:Button Text="Send" ID="buttonSend" runat="server"  
        onclick="buttonSend_Click"/>
<asp:Button Text="Recover" id="buttonRecover" runat="server" 
        onclick="buttonRecover_Click"/>

这是后面的代码,在 Contact.aspx.cs:

protected void buttonSend_Click(object sender, EventArgs e)
{
    ViewState["name"] = Request.Form["usr"];
    usr.Text=string.Empty;
}
protected void buttonRecover_Click(object sender, EventArgs e)
{
    usr.Text = Convert.ToString(ViewState["name"]);
}

问题是 Request.Form["usr"] 不存在。控件的ID与Form Post Key(是输入控件的name)不一样

所以要么使用

ViewState["name"] = Request.Form[usr.UniqueID];

或推荐方式

ViewState["name"] = usr.Text;