Ari*_*ule 5 c# asp.net visual-studio-2008
我有一个名为CheckBoxActivated的布尔变量,我在验证用户名和密码后将其赋值为true.
string name = us.UserName;
string password = us.Password;
if (name.Equals(txtName.Text) && (password.Equals(txtPassword.Text)))
{
CheckBoxAvtivated = true;
Run Code Online (Sandbox Code Playgroud)
奇怪的是,在对变量进行"真实"分析之后,我点击了另一个按钮并立即变为"假",这会导致不良行为.
protected void butNext_Click(object sender, EventArgs e)
{
if (CheckBoxAvtivated)
{
pnlCheckBoxes.Visible = true;
pnlUserCheckBoxValidation.Visible = false;
}
else
{
pnlCheckBoxes.Visible = false;
pnlUserCheckBoxValidation.Visible = true;
}
Run Code Online (Sandbox Code Playgroud)
因此变量的状态意外地变为假.这可能发生的原因是什么?
Adi*_*dil 20
如果你想在回发之间保持状态,那么asp.net中的类级别变量(全局变量)不会在回发之间保持状态,你必须使用viewstate. Asp.net基于http协议是无状态协议,并且不提供在请求之间存储用户数据的方法
在viewstate中设置
ViewState["CheckBoxAvtivated"] = "true";
Run Code Online (Sandbox Code Playgroud)
从viewstate获取
bool CheckBoxAvtivated = bool.Parse(ViewState["CheckBoxAvtivated"].ToString());
Run Code Online (Sandbox Code Playgroud)
学习使用viewstate以及不应该使用viewstate的地方非常重要.
查看国家在生活中的目的很简单:它可以在回发中保持状态.(对于ASP.NET网页,其状态是构成其控制层次结构的控件的属性值.)这引出了一个问题,"需要保留哪种状态?" 要回答这个问题,让我们首先看一下在回发中不需要持久化的状态.回想一下,在页面生命周期的实例化阶段,创建控件层次结构,并分配在声明性语法中指定的那些属性.由于在构造控件层次结构时会在每个回发时自动重新分配这些声明性属性,因此无需在视图状态中存储这些属性值.您可以在此处阅读有关viewstate的更多信息.
在计算中,无状态协议是一种通信协议,它将每个请求视为与任何先前请求无关的独立事务,以便通信由独立的请求和响应对组成.无状态协议不要求服务器在多个请求期间保留关于每个通信伙伴的会话信息或状态.相反,需要保持内部状态的协议被称为有状态协议.要阅读有关州的更多信息,请参阅此维基百科文章
| 归档时间: |
|
| 查看次数: |
1607 次 |
| 最近记录: |