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