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