布尔变量的行为异常,在回发之间变量的值丢失 [英] Strange behaviour of boolean variable, the value of variable is lost between postback

查看:71
本文介绍了布尔变量的行为异常,在回发之间变量的值丢失的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为CheckBoxActivated的布尔变量,在验证用户名和密码后将其赋值为true.

I have a boolean variable called CheckBoxActivated that I assign to true after validating a user name and password.

string name = us.UserName;
string password = us.Password;

if (name.Equals(txtName.Text) && (password.Equals(txtPassword.Text)))
{
    CheckBoxAvtivated = true;

奇怪的是,将变量设置为"true"后,我单击另一个按钮,然后立即变为"false",这将导致不良行为.

The strange thing is,after assisgning 'true' to the variable I click another button and immediately it becomes 'false' which results in undesired behaviour.

protected void butNext_Click(object sender, EventArgs e)
{
    if (CheckBoxAvtivated)
    {
        pnlCheckBoxes.Visible = true;
        pnlUserCheckBoxValidation.Visible = false;
    }
    else
    {
        pnlCheckBoxes.Visible = false;
        pnlUserCheckBoxValidation.Visible = true;
    }

变量的状态因此意外地变为false.有什么原因会发生这种情况?

The state of the variable thus changes to false unexpectedly. Any reason why this could happen?

推荐答案

asp.net中的类级别变量(全局变量)不能保持回发之间的状态,如果要保持回发之间的状态,则必须使用viewstate. Asp.net 基于 http 协议,是无状态协议,不提供在请求之间存储用户数据的方式

The class level variables (global variables) in asp.net does not maitain state between postbacks you have to use viewstate if you want to keep the state between postbacks. Asp.net is based on http protocol is stateless protocol and provides no means of storing a user's data between requests

设置为视图状态

ViewState["CheckBoxAvtivated"] = "true";

从视图状态获取

bool CheckBoxAvtivated = bool.Parse(ViewState["CheckBoxAvtivated"].ToString());

了解要使用viewstate以及不应该在何处使用它是很重要的.

It is important to learn hwere to use viewstate and where it should not be used.

查看状态在生活中的目的很简单:在那里可以保持状态跨回发.(对于ASP.NET网页,其状态为属性组成其控件层次结构的控件的值.)问题需要保持什么样的状态?"回答这个问题,让我们开始看看不需要什么状态坚持回发.回想一下,在实例化阶段页面生命周期,控件层次结构已创建以及那些分配了声明性语法中指定的属性.由于这些声明性属性会自动重新分配构造控件层次结构时,每次回发都没有需要在视图状态下存储这些属性值.你可以阅读此处.

无状态协议

在计算中,无状态协议是一种通信协议,将每个请求视为与以下交易无关的独立交易任何先前的请求,以便通信由独立的对请求和响应.无状态协议不需要服务器保留有关每个会话的会话信息或状态多个请求期间的通信伙伴.在相反,需要保持内部状态的协议是被称为有状态协议.要了解更多有关状态的信息,请参阅以下内容Wikipedia 文章

这篇关于布尔变量的行为异常,在回发之间变量的值丢失的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆