程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 使用拼湊URL的方法,實現DotNetNuke在新窗口中打開內容(二)

使用拼湊URL的方法,實現DotNetNuke在新窗口中打開內容(二)

編輯:關於ASP.NET

前面的文章我們講到,為了實現DotNetNuke在新窗口中查看或者編輯內容,我們需要自己來創建一個屬於我們自己的Default.aspx文件,然後,用這個文件來實現我們的目的。

讀者朋友們可能的問題就是:為什麼要自己創建一個新的Default.aspx?這樣做,是不是已經把DotNetNuke原本清晰的業務邏輯給打亂了?會不會因為這樣,而造成原本清晰、簡單的DotNetNuke開發層次結構混亂?

這裡需要和大家澄清的是,我們增加一個頁面,這個頁面,只是為了完成“在新窗口中打開或者編輯內容”這樣一個目的,為了同時實現這個目的,並且不影響到DotNetNuke本身的層次結構,我們必須要做到以下的幾點:

1、決不能影響到DotNetNuke的開發結構;

2、決不能再現有的開發結構中任意增加或者刪減;

3、即使沒有我們新增的這個網頁,我們也必須要保證DotNetNuke能夠正確無誤的運行;

4、所有的底層解析機制,仍然由DotNetNuke完成;

好了,我個人當然非常喜歡DotNetNuke清晰明了的開發結構,如果影響到這個結構的話,那麼,我就寧可不做這件事情了(那就可能要使用其他的CMS系統,與DotNetNuke失之交臂了)。

好的,下面,我們以Edit.aspx來代指我們新增的頁面,首先,我們這個頁面將全部復制Default.aspx和其代碼文件,將之改名為 Edit.aspx。進行了此項更改之後,當我們再發布我們的模塊的時候,就需要將Edit.aspx文件放到DotNetNuke安裝目錄的根目錄下,同時還需要將之aspx.vb文件放到這個目錄下(或者是將編譯之後的dll文件放到bin目錄下。

在我們新增的Edit.aspx.vb文件代碼的Page_Init方法上,進行一些修改(這個文件原本是從Default.aspx文件復制過來的)

如下:

Dim strSkinSrc As String = PortalSettings.ActiveTab.SkinSrc.Replace(".ascx", "_mini.ascx")
      ' skin preview
      If (Not Request.QueryString("SkinSrc") Is Nothing) Then
        PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(QueryStringDecode(Request.QueryString("SkinSrc")) & ".ascx", PortalSettings)
        ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc)
      End If
      ' load user skin ( based on cookie )
      If ctlSkin Is Nothing Then
        If Not Request.Cookies("_SkinSrc" & PortalSettings.PortalId.ToString) Is Nothing Then
          If Request.Cookies("_SkinSrc" & PortalSettings.PortalId.ToString).Value <> "" Then
            PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(Request.Cookies("_SkinSrc" & PortalSettings.PortalId.ToString).Value & ".ascx", PortalSettings)
            ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc)
          End If
        End If
      End If
      ' load assigned skin
      If ctlSkin Is Nothing Then
        If IsAdminSkin(PortalSettings.ActiveTab.IsAdminTab) Then
          Dim objSkin As UI.Skins.SkinInfo
          objSkin = SkinController.GetSkin(SkinInfo.RootSkin, PortalSettings.PortalId, SkinType.Admin)
          If Not objSkin Is Nothing Then
            PortalSettings.ActiveTab.SkinSrc = objSkin.SkinSrc
          Else
            PortalSettings.ActiveTab.SkinSrc = ""
          End If
        End If
        If PortalSettings.ActiveTab.SkinSrc <> "" Then
          PortalSettings.ActiveTab.SkinSrc = SkinController.FormatSkinSrc(strSkinSrc, PortalSettings)  'PortalSettings.ActiveTab.SkinSrc
          ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc)
        End If
      End If
      ' error loading skin - load default
      If ctlSkin Is Nothing Then
        ' could not load skin control - load default skin
        If IsAdminSkin(PortalSettings.ActiveTab.IsAdminTab) Then
          PortalSettings.ActiveTab.SkinSrc = Common.Globals.HostPath & SkinInfo.RootSkin & DefaultSkin.Folder & DefaultSkin.AdminDefaultName
        Else
          PortalSettings.ActiveTab.SkinSrc = Common.Globals.HostPath & SkinInfo.RootSkin & DefaultSkin.Folder & DefaultSkin.DefaultName
        End If
        ctlSkin = LoadSkin(strSkinSrc)     'PortalSettings.ActiveTab.SkinSrc)
      End If
      ' set skin path
      PortalSettings.ActiveTab.SkinPath = SkinController.FormatSkinPath(strSkinSrc)    'PortalSettings.ActiveTab.SkinSrc)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved