我现在对 ASP.NET 感到非常困惑。我相信每次你检索到该页面所引用的网页业务模型都会被创建,并且在将显示发送给用户之后,它会再次被拆除。
一位同事向我展示了这个简单的 Web 应用程序,它似乎在页面获取之间存储业务层代码,而不使用会话、缓存、应用程序、视图状态、查询字符串或帖子(据我所知)。
代码如下:
<form id="form1" runat="server" enableviewstate="False">
<div>
<asp:Label ID="Label1" runat="server" Text="Label" EnableViewState="False"></asp:Label>
<asp:Button ID="Button1"
runat="server" Text="Button" EnableViewState="False"
CausesValidation="False" />
</div>
</form>
页面加载:
PersistanceTest.BLL.Singleton s = PersistanceTest.BLL.Singleton.GetInstance;
Label1.Text = "Counter: " + s.GetCounter;
和单例类:
public class Singleton
{
private int counter;
private Singleton()
{
counter = 0;
}
private static Singleton theSingleton;
static public Singleton GetInstance
{
get
{
if(theSingleton == null)
{
theSingleton = new Singleton();
}
return theSingleton;
}
}
public int GetCounter
{
get
{
int c = counter;
counter++;
return c;
}
}
}
现在,当我加载页面时,每次按下按钮时计数器都会增加。但是我不知道 Singleton 实例在框架中的持久化位置?我确信它不会在页面加载之间存在。有人可以对此有所了解吗?这让我疯狂。