2013-10-04 88 views
0

我有一个按钮和一个文本框。我想要在文本框中输入一个值,当我点击按钮时,页面将重新加载,但值应该仍然在文本框中。我怎样才能做到这一点。以下代码不起作用在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"); 
     } 
    } 
} 

回答

0

Viewstate可以保留该值直到您在同一页面上。您正在重定向到其他页面。因此,而不是使用视图状态使用会话。

2

Response.Redirect完成它所说的 - 将请求重定向到NEW页面。 ViewState将无法应用。如果您需要重定向,请考虑使用会话。

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

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"); 
    } 
} 

}

+0

为什么要检查ViewState的,如果你想采取从会议的价值呢?它可能永远不会像这样传递;)我知道,可能只是一个错误,但.. – walther

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"); 
     } 
    } 
}