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 = ViewState["value"].ToString();
                }
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            ViewState["value"] = TextBox1.Text;
            Response.Redirect("default.aspx");
        }
    }
}
4

5 回答 5

2

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

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

于 2013-10-04T11:18:20.817 回答
0

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

看到这个:http ://www.w3schools.com/aspnet/showaspx.asp?filename=demo_aspnetviewstate

引用自:http ://www.w3schools.com/aspnet/aspnet_viewstate.asp

并看到这个讨论

于 2013-10-04T11:20:34.863 回答
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");
        }
    }
}
于 2013-10-04T11:23:40.847 回答
0

Viewstate 只能保留该值,直到您在同一页面上。您正在重定向到其他页面。所以不要使用视图状态使用会话。

于 2013-10-04T11:18:40.617 回答
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");
    }
}

}

于 2013-10-04T11:20:37.837 回答