最近在做一個項目要用DotNetNuke 3.x來做,要在Html/Text這個Module(模塊)的基礎(chǔ)上做一個新的模塊,當(dāng)然要加上許多額外的控制功能。
研究了一下DNN的文檔,感覺DNN比較復(fù)雜(相對DRUPAL和MAMBO而言)。分了好幾層,如下:
*.ascx|*.ascx.VB 或 C#|Controller(控制者)|ObjectInfo(商業(yè)對象)|DataProvider(抽象數(shù)據(jù)提供者)|SQLDataProvider(實際數(shù)據(jù)提供者)|StoredProc(存儲過程)|DB Table(數(shù)據(jù)庫表)注:此圖只是表達一個大致的意思,并不精確完整。
我現(xiàn)在終于基本搞明白了,也會做了。如果你有類似需要可找我?guī)兔?,我可為你提供有償服?wù),制作DNN的自定義模塊等高級應(yīng)用和開發(fā)。
當(dāng)然若只是要用DNN來架個網(wǎng)站,那就更不在話下了,因為這只是低級應(yīng)用。
Private Function IsPortalAdmin() As BooleanDim tmpStr As StringDim objRoleController As RoleController = New RoleControllerDim roleAry As String() = objRoleController.GetPortalRolesByUser(Me.UserId, Me.PortalId)If Not roleAry Is Nothing ThenFor Each aRoleStr As String In roleAryIf aRoleStr = "Administrators" ThenReturn TrueEnd IfNextEnd IfReturn FalseEnd Function
我不知道這樣寫是不是最佳辦法,但經(jīng)試驗它確實能工作。也歡迎您發(fā)表更好的實現(xiàn)此功能的代碼。
我不知道這樣寫是不是最佳辦法,但經(jīng)試驗它確實能工作。也歡迎您發(fā)表更好的實現(xiàn)此功能的代碼。
又基于Links模塊做了一個特殊的Links模塊,它可以自己自動產(chǎn)生一些鏈接.
因為這個項目是用ASP.NET 1.1開發(fā)的,ASP.NET 1.1沒有PAGE CONTROL可用,除了DATAGRID中自帶一個,但這個HTML模塊無法用DATAGRID。
到網(wǎng)上找了一下,有分頁的HTML MODULE,但要花錢買的($19美元),沒辦法,只能自己寫一個吧。
雖然在前面合并Search Results時也自己做過PAGE CONTROL,但那個比較簡單,且大量借用了DATAGRID的PAGE CONTROL功能,所以必須自己實現(xiàn)或找第三方的。
我到網(wǎng)上找到一個Pager Control for ASP.NET 1.1在http://www.codeproject.com/aspnet/ASPNETPagerControl.asp
,但這個CutePager的一些特性和功能和樣子不符合客戶的要求,我又對它進行了一些修改.
客戶要的是這樣的:
而CutePager是這樣的:
且客戶不要HINT;當(dāng)中還要有豎線;用的CSS的CLASS的名字也不一樣;前面的Page x of xx也不要;首頁及末頁時仍要顯示“前頁”和“下一頁”,但鏈接不起作用。
所以有很多不同,我就一一修改,最后完成了。
發(fā)現(xiàn)一個BUG,當(dāng)同一頁面上有兩個用到CutePager的模塊時,它們的頁面控制會互相影響,若另一模塊的某一頁不存在時,還會出錯. 于是立即修改.
也給這個模塊做了一個安裝zip包.
我最終完成的Pager類的代碼如下:
我最終完成的HtmlModule.ascx.vb中的Page_Load的代碼片斷如下:
客戶又要模塊內(nèi)容和設(shè)置可以導(dǎo)入和導(dǎo)出(Import Content, Export Content),于是又做了導(dǎo)入和導(dǎo)出功能,使客戶的額外字段也能導(dǎo)入和導(dǎo)出.