iT邦幫忙

DAY 14
3

DotNetNuke的學習心得系列 第 10

[鐵人賽Day14]DotNetNuke模組設計範本–SimpleModule(3)

前兩篇看完了View、Edit型態的UserControl之後,這一篇將要來看最後一種型態的UserControl-Settings。(雖然是Settings UserControl,不過如果讀者有注意.dnn的檔案,將會發現DotNetNuke仍然是在control type定義為Edit)
先來看Settings.ascx和執行的畫面:

在執行的畫面中,讀者會看到有幾個頁籤,其中一個是SimpleModule Settings,是這個模組的設定頁籤,另外三個都是DotNetNuke對於每一個模組基本的設定頁籤。其實說穿了就是在模組的設定頁面中,如果發現這個模組有實作ISettingsControl介面,那麼就會呼叫相對應的實作以載入屬於這個模組的設定值。
在這個模組的設定畫面中,相對也非常簡單的只是設定在View檢視畫面中所要呈現的樣式,而中括號[]加上大寫英文的部份則是在View Control內利用string.Replace的方式來取代值的方式。(請參考這篇)

接下來看看Settings.ascx.cs的內容:

在這邊可以發現和前兩篇所看到繼承的父類別不太一樣,View、Edit Control都是繼承PortalModuleBase父類別,但是Settings Control則是繼承ModuleSettingsBase父類別,並且只有兩個覆寫的公開方法,並沒有其它的事件,有什麼不一樣嗎?

如果讀者在ModuleSettingsBase上按下F12鍵看一下ModuleSettingsBase的定義,就會發現其實ModuleSettingsBase還是繼承了PortalModuleBase這個父類別,並且實作了兩個介面:ISettingsControl、IModuleControl(註),而ModuleSettingsBase在實作ISettingsControl的時候也只是宣告了兩個虛擬方法,接下來的事就讓繼承它的子類別來去覆寫了,也就是Settings.ascx.cs。


(註:在DotNetNuke的原始檔中,ModuleSettingsBase並沒有宣告實作IModuleControl,實際上在程式碼中也沒有實作的內容,真正實作的是PortalModuleBase父類別。)

最後就來看一下LoadSettings和UpdateSettings的方法吧!

LoadSettings

內容很簡單,只是透過ModuleSettingsBase提供的TabModuleSettings屬性讀取設定值,採用的是Key/Value的方式儲存。

UpdateSettings

在更新設定值的部份並不是和讀取一樣透過ModuleSettingsBase提供的TabModuleSettings屬性,因為ModuleSettingsBase的TabModuleSettings屬性(也就是Hashtable)並沒有辦法偵測處理異動,所以在更新設定值的時候是使用DotNetNuke的ModuleController來Update設定值,需要傳入TableModuleId(PortalModuleBase提供)以及設定的Key/Value。

看完了View、Edit、Settings這三個UserControl之後,讀者覺得哪一個最困難呢?Settings的部份應該是最簡單的吧?事實上就筆者的了解,除了Settings之外,View和Edit Control都可以有多個,只是在處理和實作上就會更複雜些,有興趣的讀者也可以參考DotNetNuke的Blog模組或其它DotNetNuke官方所提供包含原始碼的模組,在CodePlex上DotNetNuke專案網站右下方有個Related Projects區塊,列出了許多相關的模組專案連結。

(本文同步發表於泰克哪裡去部落格)

[鐵人賽Day1]DotNetNuke簡介
[鐵人賽Day2]DotNetNuke安裝前置作業
[鐵人賽Day3]DotNetNuke安裝-傳統方式安裝在IIS
[鐵人賽Day4]DotNetNuke安裝-透過Web PI安裝
[鐵人賽Day5]DotNetNuke安裝-使用Windows Azure Website
[鐵人賽Day6]DotNetNuke網站結構說明
[鐵人賽Day7]安裝DotNetNuke語系
[鐵人賽Day8]DotNetNuke-新增頁面與模組
[鐵人賽Day9]第一個DotNetNuke模組-Hello DotNetNuke
[鐵人賽Day10]DotNetNuke模組的多國語系
[鐵人賽Day11]安裝DotNetNuke專案範本
[鐵人賽Day12]DotNetNuke模組設計範本–SimpleModule(1)
[鐵人賽Day13]DotNetNuke模組設計範本–SimpleModule(2)
[鐵人賽Day15]DotNetNuke模組設計範本–SimpleModule(4)
[鐵人賽Day16]DotNetNuke使用篇–會員帳號設定(User Account Settings)
[鐵人賽Day17]DotNetNuke使用篇–第三方帳號驗證
[鐵人賽Day18]DotNetNuke使用篇–管理使用者帳號、角色
[鐵人賽Day19]DotNetNuke使用篇–建立子網站
[鐵人賽Day20]DotNetNuke使用篇–內容多語系化
[鐵人賽Day21]DotNetNuke使用篇–Host設定介紹
[鐵人賽Day22]DotNetNuke使用篇–網站設定(Site Settings)介紹
[鐵人賽Day23]翻譯DotNetNuke–使用語言編輯器
[鐵人賽Day24]DotNetNuke的網頁選單(Menu)翻譯
[鐵人賽Day25]設定DotNetNuke的Email範本
[鐵人賽Day26]DotNetNuke寄送郵件功能介紹
[鐵人賽Day27]查看DotNetNuke的執行記錄–事件檢視器(Log Viewer)介紹
[鐵人賽Day28]維護DotNetNuke的清單列表(List)–在Profile中可以下拉選擇台灣的縣市
[鐵人賽Day29]DotNetNuke樣式設計–Skin和Container簡介
[鐵人賽Day30]尋找更多的DotNetNuke擴充套件(Module、Skin)


上一篇
[鐵人賽Day13]DotNetNuke模組設計範本–SimpleModule(2)
下一篇
[鐵人賽Day15]DotNetNuke模組設計範本–SimpleModule(4)
系列文
DotNetNuke的學習心得27

1 則留言

0
cancelpc
iT邦新手 4 級 ‧ 2013-10-14 03:43:49

文章中有錯字:TabModuleSeetings

能發現錯字代表您很認真的觀看文章,已修正文字,感謝您的回饋與支持。

我要留言

立即登入留言