iT邦幫忙

DAY 13
2

DotNetNuke的學習心得系列 第 9

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

前一篇看完了View的UserControl之後,這一篇我們接下來看看Edit的UserControl(註:Edit指的是編輯,因此新增或更新都是Edit)。
先來看EditSimpleModule.ascx檔案內容和執行畫面。

在EditSimpleModule.ascx的開頭加入了三個引用宣告,分別引用了DotNetNuke的LabelControl、TextEditor、ModuleAuditControl,只要在ascx檔案中看到開頭是dnn的標籤,代表的就是引用DotNetNuke已經製作好的UserControl。
在DotNetNuke中,有許多方便好用的複合式控制項可以提供給開發者使用,就好像玩樂高積木一般,只要將這些控制項善加利用,便可以省去不少時間來達到許多功能。

以下針對這裡用到的三個DotNetNuke控制項簡單說明:

.LabelControl:DotNetNuke提供比Asp.Net內建更多功能的LabelControl,其中一項就是提示內容,也就是第二張執行畫面編號1在Content右邊的驚嘆號,使用者可以在DotNetNuke網站的許多地方看到這樣的設計,讓使用者對於這項功能有疑問的時候可以將滑鼠移上去看一下提示說明。
.TextEditor:DotNetNuke提供功能豐富的內容編輯器,讓使用者可以方便編寫內容,最後以HTML的方式呈現。(也就是Blog常用的HTML編輯器)
.ModuleAuditControl:這是一個很簡單的控制項,純粹只是在編輯畫面讓使用者知道模組的內容是由誰建立或誰是最後一次編輯的,同樣也可以在DotNetNuke網站的許多功能看到它。

接著再來看EditSimpleModule.ascx.cs檔案內容:

Edit類型的UserControl同樣是繼承PortalModuleBase父類別,在這裡只有四個事件和一個私有變數ItemId。
私有變數ItemId被給予的值是Null.NullInteger,這是DotNetNuke自行定義的Integer空值,實際上代表的值是負1,其它像是NullBoolean、NullByte、NullDate、NullString等…都有在Null這個DotNetNuke自行定義的Null類別中(namespace DotNetNuke.Common.Utilities)。

接下來就一個個事件來看吧!

Page_Load

在Page_Load的一開始透過Request.QueryString判斷是否有ItemId這個參數,如果有的話就Parse設定到ItemId變數中,而QueryString的ItemId參數來源就是前一篇在看ViewSimpleModule.ascx內容時,HyperLink的NavigateUrl屬性值的來源(圖中第1條紅線):

編號2的Localization則是在「DotNetNuke模組的多國語系」有提到的語系資源檔內容的讀取方式,不過這邊卻沒有傳入第二個參數,差別便在於這邊抓取的是網站的共用資源檔(App_GlobalResources\SharedResources.resx)。

最後編號3的Globals.NavigateURL()則是取得目前頁面所停駐的網址,因此該行等於是重新整理頁面的意思。

cmdCancel_Click

這個事件中除了先前提過的Try-Catch區塊,裡面只有一行程式碼,那就是Response.Redirect(Globals.NavigateURL(), true)。

cmdUpdate_Click

Update事件大部份也在前一篇的Page_Load有出現過,差別只在於判斷ItemId變數是否為DotNetNuke定義的Null(所以用Null類別中的IsNull靜態方法),據此來處理新增或是更新動作。

cmdDelete_Click

Delete事件和Update事件差不多,先判斷ItemId變數是不是Null,因為如果是Null代表的是新增,那就不需要刪除任何資料。
ModuleId是PortalModuleBase提供的屬性。

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

[鐵人賽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)
[鐵人賽Day14]DotNetNuke模組設計範本–SimpleModule(3)
[鐵人賽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)


上一篇
[鐵人賽Day12]DotNetNuke模組設計範本–SimpleModule(1)
下一篇
[鐵人賽Day14]DotNetNuke模組設計範本–SimpleModule(3)
系列文
DotNetNuke的學習心得27

尚未有邦友留言

立即登入留言