我有一个名为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)

09-10 03:07
查看更多