2011-08-24 152 views
1

我有一堆默認的字符串和整個應用程序的整數。比如默認名稱等等。這些都是常數。我只想在我的應用程序的不同頁面中訪問它們。什麼是放置它們的最佳地點?我在想Enum或類似的東西。什麼是最好的方法?在哪裏存儲默認值asp.net

回答

2

最好的地方是將它們放到你的web.config文件的appSettings部分:

<appSettings> 
    <add key="myKey" value="myValue"/> 
    </appSettings> 

然後,您可以讀取使用ConfigurationManager類的鍵/值對:

' Get the AppSettings section.   
' This function uses the AppSettings property 
' to read the appSettings configuration 
' section. 
Public Shared Sub ReadAppSettings() 
    Try 
     ' Get the AppSettings section. 
     Dim appSettings As NameValueCollection = _ 
      ConfigurationManager.AppSettings 

     ' Get the AppSettings section elements. 
     Console.WriteLine() 
     Console.WriteLine("Using AppSettings property.") 
     Console.WriteLine("Application settings:") 

     If appSettings.Count = 0 Then 
      Console.WriteLine(_ 
      "[ReadAppSettings: {0}]", _ 
      "AppSettings is empty Use GetSection first.") 
     End If 
     Dim i As Integer = 0 
     While i < appSettings.Count 
      Console.WriteLine(_ 
       "#{0} Key: {1} Value: {2}", _ 
       i, appSettings.GetKey(i), appSettings(i)) 
      System.Math.Max(_ 
       System.Threading.Interlocked. _ 
       Increment(i), i - 1) 
     End While 
    Catch e As ConfigurationErrorsException 
     Console.WriteLine("[ReadAppSettings: {0}]", _ 
          e.ToString()) 
    End Try 
End Sub 
+2

「最好」 - 不一定。但肯定是一個有效和成功的選擇。 – ckittel

+0

True - 可能不是最快的,但它具有靈活性:如果值發生更改,則不需要重新編譯,並且可以爲dev/QA/production自定義web.config文件。 –

+1

對於「不重新編譯,如果值發生了變化」,.Net會很高興地重新編譯網站,它會改變web.config ...一個更好的短語是「如果值發生變化,就不會重新部署代碼」 – NotMe

0

我保持這樣的事情在項目的設置區域(項目屬性 - >設置),然後訪問它們在我的代碼My.Settings.<TheSettingName>在一個強類型的莊園。

另外,作爲獎勵,它會將這些設置中的每一個放在web.config文件中,然後我可以在運行時根據需要更改它們的值,而無需重新編譯/部署。

這樣做的缺點是My.Settings.<...>不適用於view/aspx。因此,對於我在視圖中需要的值,我將它們包裝在訪問器模塊中。例如。

Public Module ScriptReferences 
    Public Function JQueryJsUrl() As String 
     Return My.Settings.JQueryJsUrl 
    End Function 
End Module 

然後在視圖/ aspx中,您可以簡單地撥打ScriptReferences.JQueryJsUrl以獲得您的價值。

+0

是的,我記得我曾經使用過這個東西,但是無法在網絡應用上找到它。 – user194076

0

最好的方法是有某種定義文件。但是,要小心處理方法,因爲如果不斷向其添加隨機常量,您可以輕鬆獲得難以管理的定義文件。

1

你可以簡單地用每個公共常量創建一個靜態類。

static public class DefaultValues 
{ 
    public const string Name = "Bob"; 
    public const int AppId = 1234; 
} 
0

我通常創建一個常量類或其他一些適當命名的靜態類,然後把各種常量的靜態獲取只有屬性。

public static string ConstantString { get {return "Hello World"; } } 
0

你也可以使用App_GlobalRessource和資源文件...這樣可以很容易地維護這些常量。