每当我尝试更新先前输入的会话变量时,它都不会更新。
以下是我正在谈论的一个例子:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Test"] != null)
{
TextBox1.Text = Session["Test"].ToString();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["Test"] = TextBox1.Text;
}
因此,当我第一次点击该按钮时,文本框将会更新。但是当我编辑文本并再次单击该按钮时,文本框只是恢复到第一次没有更新的状态。有人有什么想法吗?
答案 0 :(得分:2)
所以当我第一次点击按钮时,文本框就会出现 更新。但是当我编辑文本并再次单击按钮时, 文本框只是恢复到第一次
我相信这是因为你的确如此:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Test"] != null)
{
TextBox1.Text = Session["Test"].ToString();
}
}
在该代码中,您应该检查页面加载是否由回发(单击按钮)引起。所以你应该这样做:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack && Session["Test"] != null)
{
TextBox1.Text = Session["Test"].ToString();
}
}
答案 1 :(得分:1)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["Test"] != null && Session["Test"].ToString().Length > 0)
{
TextBox1.Text = Session["Test"].ToString();
}
}
Session["Test"] = string.Empty;
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["Test"] = TextBox1.Text;
}
这是经过测试的代码。
答案 2 :(得分:0)
这样做
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Session["Test"] = "";
}
if (Session["Test"] != null)
{
Session["Test"] = ASPxTextBox1.Text;
}
}
protected void ASPxButton1_Click(object sender, EventArgs e)
{
ASPxTextBox1.Text = Session["Test"].ToString();
}
答案 3 :(得分:0)
您回复了该页面,这就是为什么它会在您编写之前采用之前的值
protected void Page_Load(object sender, EventArgs e)
{
if (Session["Test"] != null)
{
TextBox1.Text = Session["Test"].ToString();
}
}
在此代码中,文本框文本将使用您之前输入的先前值恢复, 所以你的代码应该是
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
if (Session["Test"] != null)
{
TextBox1.Text = Session["Test"].ToString();
}
}
}
答案 4 :(得分:0)
这应该有效
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Session["Test"] != null)
{
TextBox1.Text = Session["Test"].ToString();
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["Test"] = TextBox1.Text;
}
答案 5 :(得分:0)
您正在按钮单击之前获取Page_Load事件,因此您的Page_Load将使用Session中的先前值覆盖TextBox1.Text的值。这就是为什么它在第一次设置后永远不会改变的原因。
检查您是否没有像这样回复Page_Load上的帖子:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TextBox1.Text = (Session["Test"] ?? "").ToString();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Session["Test"] = TextBox1.Text;
}
话虽如此,如果可以提供帮助,您可能希望完全避免使用Session。