首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

使用 URL 重寫實現 DotNetNuke 新視窗開啟內容(二):Edit.aspx 實作與皮膚載入邏輯修改

     編輯:關於ASP.NET

為實現新視窗編輯/檢視內容,需自建 Edit.aspx。但這不會破壞 DNN 架構,只要遵守四大原則:不影響開發結構、不任意增刪現有結構、確保無新頁面時 DNN 正常運作、底層解析仍由 DNN 處理。

實作步驟

  1. 完整複製 Default.aspx 及其代碼後置檔,重命名為 Edit.aspx。
  2. 發布時將 Edit.aspx 放入網站根目錄,.aspx.vb 放同目錄或編譯後的 .dll 放入 bin 目錄。
  3. 修改 Edit.aspx.vb 中的 Page_Init 方法,調整皮膚載入邏輯:
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)
    ctlSkin = LoadSkin(PortalSettings.ActiveTab.SkinSrc)
  End If
End If
' error loading skin - load default
If ctlSkin Is Nothing Then
  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)
End If
' set skin path
PortalSettings.ActiveTab.SkinPath = SkinController.FormatSkinPath(strSkinSrc)

關鍵在於將預設皮膚改為 _mini.ascx(極簡版),並保留完整的皮膚解析流程,確保新視窗僅呈現模組內容,不包含全站導航、Banner 等干擾元素。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved