我有一个名为CheckBoxActivated的 bool 变量,在验证用户名和密码后将其分配给true。
string name = us.UserName;
string password = us.Password;
if (name.Equals(txtName.Text) && (password.Equals(txtPassword.Text)))
{
CheckBoxAvtivated = true;
奇怪的是,将变量设置为“true”后,我单击另一个按钮,然后立即变为“false”,这将导致不良行为。
protected void butNext_Click(object sender, EventArgs e)
{
if (CheckBoxAvtivated)
{
pnlCheckBoxes.Visible = true;
pnlUserCheckBoxValidation.Visible = false;
}
else
{
pnlCheckBoxes.Visible = false;
pnlUserCheckBoxValidation.Visible = true;
}
变量的状态因此意外地变为false。有什么原因会发生这种情况?
最佳答案
如果要在回发之间保持状态,则asp.net中的类级别变量(全局变量)不能保持回发之间的状态,因此必须使用viewstate。 Asp.net
基于http
协议(protocol),是无状态协议(protocol),不提供在请求之间存储用户数据的方法
设定为检视状态
ViewState["CheckBoxAvtivated"] = "true";
从viewstate获取
bool CheckBoxAvtivated = bool.Parse(ViewState["CheckBoxAvtivated"].ToString());
重要的是要了解如何使用viewstate以及不应该在何处使用它。
View 状态的作用
无状态协议(protocol)