首页 / 网页编程 / ASP.NET / 使用拼凑URL的方法,实现DotNetNuke在新窗口中打开内容(二)
使用拼凑URL的方法,实现DotNetNuke在新窗口中打开内容(二)2010-06-18 cnblogs dnnworkflow前面的文章我们讲到,为了实现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)