ASP.Net全局/页面范围变量
问题描述:
我正在将一个经典的ASP应用程序转换为ASP.Net,并且遇到了与全局变量(或页面范围变量)相关的砖墙问题。作为说明,该应用程序不是典型的应用程序,因为它不会构建HTML。相反,它会获取AJAX请求并返回JSON字符串,因此不会使用很多asp.net功能。第一次很长时间以来,谷歌搜索没有让我回答!ASP.Net全局/页面范围变量
在我们使用了一些在variables.asp定义的全局变量的ASP代码,例如:
<%
dim lId
%>
这是ASP则包含在所有的页面。还有许多其他包含文件引用这些变量,以及页面本身。
对于asp.net最接近我能找到的是有variables.aspx:
<SCRIPT LANGUAGE="VBScript" RunAt="Server">
shared dim lId as integer
</SCRIPT>
但是,我意识到,这个变量是比它的.asp如何工作更加“全球化”,而它可能会导致线程问题等,并且它们会像使用Application()对象那样工作,这不是我所追求的。
实际上,我需要的是能够声明一个变量,该变量可以在其他包含中引用,并且在基本页面中,其范围/生存期仅用于处理该页面。
在这个阶段,我能想到的唯一的事情就是用Session变量,并在每个处理结束,以清除它们,但我害怕这样的转换
答
看起来像这样我可能会做一些这样的:
shared dim gv as New GlobalVariables
public class GlobalVariables
public property Id as integer
Get
Id = cint(HttpContext.Current.Items("id"))
End Get
set (ByVal aiValue as integer)
HttpContext.Current.Items("id") = aiValue
End Set
end property
end class
又在哪里过我当前参“锅盖”,我需要“gv.Id”来代替。
gv仍然是全球性的,但鉴于它正在看current.items我不应该有任何线程问题。
这是一个asp.net webforms应用程序或asp.net mvc应用程序? – lomaxx 2012-02-28 09:21:55