【发布时间】:2026-01-22 08:05:02
【问题描述】:
我在我的程序类中声明了一些布尔变量并设置为 false。在另一种方法中,我将布尔变量的值更改为 true,但随后我必须通过单击另一个或两个按钮来刷新页面。刷新 ASP.NET 页面后,当我希望它为 true 时,该值将返回 false。如何防止它将布尔变量更改为原始值并将其保持为真。这将是什么 C# 语法。例如,我有以下内容:
public partial class _Default : System.Web.UI.Page
{
bool plus = false;
bool minus = false;
bool multiply = false;
bool divide = false;
bool equal = false;
}
在我的程序中进一步向下:
protected void btnMultiply_Click(object sender, EventArgs e)
{
if (TextBox1.Text == "")
{
return;
}
else
{
multiply = true;
Session["Tag"] = TextBox1.Text;
TextBox1.Text = "";
}
}
按下上面的“乘法”按钮后,我接下来按下等于按钮,如下所示,我的页面刷新,将布尔乘法的值更改回 false:
protected void btnEquals_Click(object sender, EventArgs e)
{
equal = true;
if (plus)
{
decimal dec = Convert.ToDecimal(Session["Tag"]) + Convert.ToDecimal(TextBox1.Text);
TextBox1.Text = dec.ToString();
}
else if (minus)
{
decimal dec = Convert.ToDecimal(Session["Tag"]) - Convert.ToDecimal(TextBox1.Text);
TextBox1.Text = dec.ToString();
}
else if (multiply)
{
decimal dec = Convert.ToDecimal(Session["Tag"]) * Convert.ToDecimal(TextBox1.Text);
TextBox1.Text = dec.ToString();
}
else if (divide)
{
decimal dec = Convert.ToDecimal(Session["Tag"]) / Convert.ToDecimal(TextBox1.Text);
TextBox1.Text = dec.ToString();
}
return;
}
因此,当它计算 (multiply) 时,它会跳过它,因为当它应该为真并计算表达式时它被重置为 false。我的主要问题是如何保持变量为真而不是恢复为假并跳过(乘)?
【问题讨论】:
-
对于这样的事情,ViewState 绝对比 Session 更好。如果用户单击“返回”,或者在同一页面上打开了多个选项卡,Session 将尝试对所有选项卡使用相同的状态,而 ViewState 将跟踪用户正在查看的特定页面加载的状态当他们点击按钮时。