【问题标题】:Property set to true, but it's still false - how is that possible?属性设置为 true,但它仍然是 false - 这怎么可能?
【发布时间】:2015-03-10 20:53:45
【问题描述】:

基本的 ASP.NET 4.0 网站应用程序(网站,而不是 WebApplication)。

我正在尝试使 标准 ASP.NET 标签控件可见。

我设置可见属性 = true。但它仍然是 False,不会改变。

这是调试器截图。

调试器从第 40 行移动到第 41 行后,标签的 Visible 属性仍然为 False。

这怎么可能???

附: AFAIK,ASP.NET 为每个线程提供请求,所以在调试时它仍然是同一个线程(同一个请求,同一个线程),我是唯一一个在本地执行这个应用程序的人。

【问题讨论】:

  • 视图状态可能需要一段时间才能流失。

标签: c# asp.net


【解决方案1】:

有多种选项,具体取决于您的代码,例如

  1. 属性 setter 和 getter 没有相同的数据源,例如

public bool Visible { set { ; } get { return this.visible; } }

或

public bool Visible { set { SetRemotely(value); } get { return cachedValue; } }

或

public bool Visible
{
    set { if (someCondition) this.visible = value; }
    get { return this.visible; }
}
  1. 多线程 - 另一个线程更改了属性。

  2. 优化器 - 由于优化,命令以另一个顺序执行。

有关属性、线程模式、构建设置的更多信息可以帮助缩小范围。

【讨论】:

  • 丹尼,你在说什么? :) 它不是用户控件,而是标准的 asp.net 标签控件。屏幕截图对您有意义吗?
  • @monstro a.您可以将对象的类型添加到您的问题中。湾。然而,在大多数情况下,没有,总是有边缘情况。也许父级设置为可见 = false。
  • a) 好吧,我假设回答的人知道什么是 ASP.NET WebForms 标签控件:msdn.microsoft.com/en-us/library/… b) 不明白你想说什么,你会看到调试器上的黄色标记截图?这是 Visible 设置为“true”后的下一个调试器步骤,查看“Watch”窗口 - 是“true”还是“false”?解释一下:)
  • @monstro 人们知道它是什么,但是,您可以用任何名称命名任何对象。 lblImpersonation 可以是任何类,包括其他 ASP.NET 控件。
  • @monstro 没有更多上下文,不可能说出确切的答案。
猜你喜欢
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 2021-05-12
  • 2021-07-05
  • 2021-05-16
  • 1970-01-01
  • 2022-01-08
  • 2012-04-05
相关资源
最近更新 更多