ViewState不能用于回发ASP.NET C#

时间:2017-09-11 13:35:36

标签: c# asp.net viewstate

我正在尝试为值字段创建一个简单的“恢复”按钮。 由于某种原因,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"]);
}

1 个答案:

答案 0 :(得分:3)

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

所以要么使用

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

或推荐方式

ViewState["name"] = usr.Text;