如何声明其他web窗体也可以在ASP.NET中使用的全局变量



下面是一个示例全局声明变量:

Public Shared str as String

但是这个全局声明只针对一个web表单。是否可以声明其他web表单可以使用的全局变量?

Web编程,即:asp.net,是无状态的。这意味着与传统的桌面编程不同,一个页面请求与另一个页面无关。

有几种在页面之间共享信息的标准方式:全局、会话、Cookie、缓存、数据库、查询字符串参数和表单发布参数。

全局-数据存储在Global.asax文件中声明的全局变量中。这些数据在所有用户/页面中都可用,并且在IIS进行重置或您有意将其清除之前,这些数据将一直存在。通常情况下,这是一个非常非常糟糕的主意,因为当值发生变化时,您很容易遇到线程问题,而且您通常不会在所有用户/会话中共享可更改的值。

会话-数据存储在服务器端(或web服务器的内存中或状态服务器中(。这是每个用户的。适用于单web服务器实现;然而,对于这篇关于负载平衡web服务器的简单文章来说,有一些缺点太复杂了。内存会话在应用程序重新启动期间可能会被清除;状态服务器将允许会话值在该事件中持久化。然而,状态服务器通常需要数据库往返,这通常会抵消使用它而不是进行常规数据库调用的所有优势。

Cookies-数据存储在浏览器中,并在每次页面请求时发送。这是每个用户的。适用于少量数据,通常小于4KB。然而,数据被发送到浏览器,并且最终用户肯定能够检查数据。通常情况下,您需要对数据进行加密。负载平衡的web服务器没有问题;然而,这将导致在客户端和服务器之间来回发送的数据量稍大。此外,web服务器重新启动也没有问题。可以设置为关闭浏览器后自动清除。

缓存-数据存储在类似memcache的缓存机制中,该机制可能与web服务器在同一台计算机上,也可能不在同一机器上。通常用于更高级的分布式应用程序。做你的研究。

数据库-数据存储在某种类型的数据库中,如MS SQL Server。非常适合需要长期保存的持久化数据。缺点是它需要一个DB调用来按需提取数据;这可以通过一般的硬件和网络速度来减轻。请注意,会话状态服务器有完全相同的缺点。

查询字符串-在页面之间传输某些数据的简单方法。例如在一个页面上显示帐户列表,并在另一个页面链接到单个帐户视图。通常不适用于在整个应用程序中保留一段数据。使预订标记网站上的特定视图变得容易。

Form Post-类似于查询字符串。主要区别在于,数据是从一个页面发布到另一个页面的,而不是在查询字符串行上;而且这本书是不可标记的。

您可以使用webform的类型名称来访问它,类似于

Dim thisstr = MainPage.str
lblSomeLabel.Text = thisstr

但是,您应该注意,每次加载页面时,都会重新生成整个ASP.Net堆栈。(这比这复杂一点,但现在已经足够了(。因此,变量将不会在页面请求之间持久存在。

您可能需要研究使用会话变量。

最新更新