使用Asp.net中的View State保留文本框的值?

时间:2013-10-04 11:14:55

标签: c# asp.net

我有一个按钮和一个文本框。我希望在文本框中输入一个值,当我点击按钮时,页面将重新加载,但值仍应在文本框中。我怎样才能做到这一点。以下代码不起作用

namespace WebApplication2
{
    public partial class _Default : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (ViewState["value"] != null)
                {
                    TextBox1.Text = ViewState["value"].ToString();
                }
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            ViewState["value"] = TextBox1.Text;
            Response.Redirect("default.aspx");
        }
    }
}

5 个答案:

答案 0 :(得分:2)

Response.Redirect执行它所说的内容 - 将请求重定向到新页面。 ViewState永远不会得到应用。如果您需要重定向,请考虑使用会话。

如果您不需要重定向,只需不要重定向并仅更新需要更新的部分页面。

答案 1 :(得分:0)

只有当您在同一页面上时,Viewstate才能保留该值。您正在重定向到其他页面。因此,而不是使用viewstate使用会话。

答案 2 :(得分:0)

asp.net webform已经在页面刷新时保持了viewstate。不需要任何代码来处理此操作。

请参阅:http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_aspnetviewstate

参考:http://www.w3schools.com/aspnet/aspnet_viewstate.asp

并查看此discussion

答案 3 :(得分:0)

试试这个

namespace WebApplication2
{
   public partial class _Default : System.Web.UI.Page
    {

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (ViewState["value"] != null)
            {
                TextBox1.Text = Session["value"].ToString();
            }
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Session["value"] = TextBox1.Text;
        Response.Redirect("default.aspx");
    }
}

}

答案 4 :(得分:0)

由于您要重定向到新的VIEW,因此 VIEWSTATE 将不会有任何帮助。所以,使用会话

namespace WebApplication2
{
    public partial class _Default : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Session["value"] != null)
                {
                    TextBox1.Text = Session["value"].ToString();
                }
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            Session["value"] = TextBox1.Text;
            Response.Redirect("default.aspx");
        }
    }
}