文章目錄
參考文章:DotNetNuke進階編程4Chapter 12
開發環境:VS2008,DotNetNuke5.4.2_source,SqlServer express 2005
安裝工具:DotNetNuke_Community_05.04.02_StarterKit.vsi
今天開始我的DotNetNuke模組開學的學習首先從HelloWorld模組開始,之前從john的視頻教程中練習過HelloWorld模組的開發,今天使用StarterKit進行操作。開啟DotNetNuke5.4.2_source的解決方案,如所示
我們在http://localhost/DotNetNuke_Community/->右鍵->添加新項,然後在“我的模板”中選擇DotNetNuke Dynamic Module。如所示。
這時候,Web瀏覽器匯總會載入一個文檔,詳細解釋所需執行的各個步驟,將ModuleName檔案夾重新命名與模組名稱HelloWorld一致。這樣就可以確保在位門戶網站開發額外的模組時候不會出現命名衝突。該修改的包括以下三處。
1. /App_Code/ModuleName to /App_Code/HelloWorld
2. /DesktopModules/ModuleName to /DesktopModules/HelloWorld.
3. 以及web.config檔案中做如下修改,這是為了對應app_code中添加的HelloWorld
<system.web>
<compilation>
<codeSubDirectories>
<add directoryName="HelloWorld" />
</codeSubDirectories>
</compilation>
</system.web>
建立模組部分已經完成,下面的工作是在DotNetNuke系統中註冊HelloWorld模組。操作過程為:Host->ModuleDefinition,如所示。
建立模組有Crete Module From: New,control ,manifest。三種形式。
New:是建立一個全新的模組,即在DotNetNuke系統中建立,而不是在VS2008中建立。
Control:是建立指定的web control。
Manifest:是手動方式添加DNN模組的定義,這是在VS2008下已經建立了DNN模組的情況下。我們這裡使用manifest,如所示。
但是添加模組的時候出現如下錯誤。
然後我在app_code下複製了HelloWorld檔案夾並且重新命名為YourCompany.HelloWorld。我們在StarterKit建立模組的時候將ModuleName重新命名為HelloWorld,但是在HelloWorld.dnn檔案中,我們會發現模組名都帶有YourCompany。
去模組定義中查看HelloWorld模組,如所示:
我們會發現模組名帶有YourCompany。模組的控制項載入如所示。都是自動載入的。不需要手動載入。
我們在Home頁面添加HelloWorld模組執行個體,結果如下錯誤
感覺是跟前面出現的那個YourCompany錯誤有關,所以做如下添加模組的測試。
添加Hello模組,並且直接將app_code檔案夾和DesktopModule檔案夾下的Hello改名為YourCompany.Hello。在web.config中也做了相應的修改,錯誤如下:
意思是找不到控制項,我覺得是因為desktopmodule目錄下Hello改名為YourCompany.Hello的緣故。所以將DesktopModule目錄下的YourCompany.Hello改成Hello。出現如下錯誤:
這個錯誤表示dbo.YourCompany_Gethellos這個預存程序不存在。模組依然沒有建立成功。
現在只修改web.config和app_code下加yourcompany,而desktopmodule下不加yourcompany測試一下。操作過程如所示。
但是載入模組出現如下錯誤。
和Hello模組出現的問題一樣。都是找不到預存程序,因此我想到可能是沒有執行sql指令碼的緣故。然後我在host->sql下執行了01.00.00.SqlDataProvider指令碼。
但是執行指令碼出現如下錯誤。
不過這個錯誤只需要參照:DNN中手動插入01.00.00.SqlDataProvider指令碼錯誤的問題就可以解決。解決錯誤以後再在Home頁中添加模組,這會添加模組成功。
總結:
DNN模組的建立分為三個步驟:
1. 在vs2008下建立模組,在建立過程中,App_Code目錄和web.config中都需要對模組名加上YourCompany,而DeskTopModule目錄下的模組所在檔案在不需要加YourCompany。
2. 在DotNetNuke系統中manifest方式註冊模組
3. 執行01.00.00.SqlDataProvider指令碼。