2010-10-27 42 views
1

不知道「頁面變量」是正確的話,但我想是這樣的:在ASP.NET中聲明頁面變量不好嗎?

using System; 
. 
. 
. 

namespace whatever 
{ 
    public partial class Submit : Page 
    { 
     int id; 
     protected void Page_Load() 
     { 
      id = getid(); 
     } 
. 
. 
. 

很顯然,我會在某一點之後(而不是在pageLoad的)使用id。似乎每次都要通過邏輯來獲取它。這樣做有什麼缺點嗎?

+0

這很好。適當時使用此模式。 – Tangurena 2010-10-27 18:21:59

回答

2

完美有效和正常。您可能希望將您的字段聲明爲受保護的,以便可以從標記中使用它們。

+0

線程安全性如何?這是如何處理的? – rkg 2010-10-27 17:46:44

+0

@Ravi Gummadi:每個線程都有自己的'Page'實例。 – 2011-03-15 18:10:47

1

邏輯應該與類變量相同,如果id生成成本很高,然後將其保存在頁面變量中。

除非您希望它在Post Backs上保持不變,在這種情況下,您可以使用Session對象來保存該值。例如Session["key_to_object"] = id;

1

您正在尋找的術語是範圍。不,這裏完全沒有什麼不對,這種用法特別適合。每次使用它時,重新獲得您的函數的ID是無效的,而且使用範圍是針對整個班級的。

一般來說,範圍應該由誰需要使用變量來確定,並且在某種程度上,如@Y Low所說,創建它的成本。也就是說,有時你可能想要聲明一個函數範圍之外的東西,即使函數是唯一被使用的地方。例如,如果你有一個函數在你的類中被調用了幾千次(比如說,以一種特殊的方式將一個值格式化爲一個字符串),並且它需要在內部聲明一些變量,那麼它會更多有效地在函數外部聲明它們,並在每次調用函數時減少開銷。

這可能是TMI。無論如何,就你的情況而言,由於你在類範圍中使用了「id」,所以在這裏定義它是完全合適的。