2012-02-28 176 views
1

我正在將一個經典的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變量,並在每個處理結束,以清除它們,但我害怕這樣的轉換

+0

這是一個asp.net webforms應用程序或asp.net mvc應用程序? – lomaxx 2012-02-28 09:21:55

回答

0

您可以創建的工作/問題在你的asp.net項目中存儲這些靜態變量的類。如果它們是配置參數,它們應該放在web.config文件中。

+0

感謝您的快速響應。它們不是配置參數,它們不是靜態的。它們用於跟蹤您正在修改的記錄的ID,無論您是添加/修改/刪除記錄等,所有事情在每篇文章中都有所不同。通過創建一個類,我簡單地進行了實驗,但它變成了雞和蛋 - 我需要一個全局變量來保存類的實例? – Chudles 2012-02-28 02:35:49

+0

聽起來不像是全局變量。也許你應該使用viewstate來存儲它們。 – jmaglio 2012-02-28 02:49:53

0

看起來像這樣我可能會做一些這樣的:

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我不應該有任何線程問題。