寫習慣ASP.Net的朋友們應該都很習慣使用web.config來存放系統設定值了,但是Silverlight沒有專屬的設定檔可以用,又不能直接讀取web.config檔,加上Silverilght 3.0之後,原來2.0中ASP.Net的Silveright控制項也被拔掉了,要存取web.config看起來就又更遠了一些。
不過,路是人走出來的,方法是人想出來的,Follow me!!
寫習慣ASP.Net的朋友們應該都很習慣使用web.config來存放系統設定值了,但是Silverlight沒有專屬的設定檔可以用,又不能直接讀取web.config檔,加上Silverilght 3.0之後,原來2.0中ASP.Net的Silveright控制項也被拔掉了,要存取web.config看起來就又更遠了一些。
不過,路是人走出來的,方法是人想出來的,Follow me!!
如果仔細看一下用來host Silverilght 的aspx檔的話,會發現裡面有一段我們可以利用的區段:
沒錯,就是這個參數區段,我們可以從這個區段下手,在裡面加上一段
<param name="InitParams" value="" />
搭配Silverlight專案中的App.xaml.cs裡面的
來取得InitParams的值。
OK,講完了理論,那實際的作法呢?
第一步,我們必需在aspx檔中加入一個Literal控制項,以便動態的塞入<param name="InitParams" value="" />到aspx檔,但是VS2010預設建立的aspx並沒有跟它對應的cs檔,所以我們就來自己建立一個新的WebForm頁面吧!!
建立好新的aspx檔之後,把原來的aspx檔中<html>到</html>中所有的內容複製到新的aspx檔中,取代掉原來的內容,並且在原來的加上<param>區段之後加入一個Literal控制項,我實作的範例檔內容如下:
第二步,我們要在新的aspx.cs檔中讀取web.config的內容,並且把內容透過Literal Control動態的寫進aspx檔中,實作方式如下:
到這邊,我們已經完成了一半!!
第三步,要讓Silverlight專案能讀得到InitParams,修改App.xaml.cs檔,加入一個Property供MainPage存取,並且透過e.InitParams來取得aspx裡面的InitParams,我的範例如下:
最後就是在MainPage.xaml和MainPage.xaml.cs中動手腳,把InitParams顯示出來;而這邊應該就相對的簡單了,請直接參考範例程式碼。
都做完之後就可以很開心的透過web.config來存放一些要讓Silverlight專案使用的設定值啦!!
不過,要注意的是,在aspx檔中的InitParams會以明碼顯示,如果有安全性的顧慮的話,請自行加上加密編碼喔!!
來看看成品吧:
最後,不免俗的還是得附上專原始碼,請自行服用: