我想,很多寫 ASP.NET 應用程式的人,都會習慣性的把自己的一些設定值放到 Web.config 中的 appSettings 區域中,然後用 ConfigurationSettings.AppSettings (1.1) 或 ConfigurationManager.AppSettings (2.0+) 來取設定值吧,雖然它是很好用沒錯,但是如果設定一多的話,appSettings 區塊會充斥一大堆的設定值,屆時要分也不太好分(一堆不同模組的設定都混在同一區了),因此,若想要寫中大型 ASP.NET 應用程式的人,可能不得不學一下如何設計自己的 Configuration 區段了。
我想,很多寫 ASP.NET 應用程式的人,都會習慣性的把自己的一些設定值放到 Web.config 中的 appSettings 區域中,然後用 ConfigurationSettings.AppSettings (1.1) 或 ConfigurationManager.AppSettings (2.0+) 來取設定值吧,雖然它是很好用沒錯,但是如果設定一多的話,appSettings 區塊會充斥一大堆的設定值,屆時要分也不太好分(一堆不同模組的設定都混在同一區了),因此,若想要寫中大型 ASP.NET 應用程式的人,可能不得不學一下如何設計自己的 Configuration 區段了。
其實自創自己的 Configuration 區段也不會太難:
- 在專案中加入對 System.Configuration.dll 的參考。
- 新增一個類別,繼承自 ConfigurationSection 類別。
- 建立要使用的屬性值,並套用 ConfigurationPropertyAttribute,設定屬性的特性。
- 在 Web.config 中註冊你的 ConfigurationSection 類別。
- 在 Web.config 中使用你的 ConfigurationSection 設定。
下列程式碼即是一個簡單的 ConfigurationSection 範例:
所有要使用在 Configuration 的屬性,都要套用 ConfigurationPropertyAttribute 以設定它的特性,像是名稱,預設值,是否為必要欄位等等。
然後在 Web.config 中的 configSections 區段中註冊它:
<configuration>
<configSections>
<section name="ActionPanelContainer" type="ActionPanelSection" />
</configSections>
</configuration>
接著就可以在 Web.config 中使用了。
<configuration>
...
<ActionPanelContainer
ContainerControlID="phControls"
DisplayDefaultActionPanel="true"
DefaultActionPanelControlUrl="~/Controls/TestDefaultControl.ascx" />
...
</configuration>
是不是很簡單呢?
定義好之後,在程式中可利用 ConfigurationManager.GetSection() 來叫用它: