Register  |  Login

一些DNN须知的技巧

Posted in [DNN模块开发] By Baldwin
在此列举一些比较常用的技巧
1)有时我们开发模块时可能会有这样的需求,就是根据模块的相关设置来决定是否显示用户是否可以有权限编辑,即设置模块选项可能优先于编辑内容等等。这时下列的方法可能就是我们需要的:
设置模块选项
Public ReadOnly Property ModuleActions() As ModuleActionCollection Implements IActionable.ModuleActions
            Get
                ' 先检查是否已设置模块某选项
                Dim someSetting As String = Settings("someSetting")
                Dim Actions As New ModuleActionCollection
                If Not someSetting Is Nothing Then
                    Actions.Add(Me.GetNextActionID(), Localization.GetString("EditContent", LocalResourceFile), ModuleActionType.AddContent, "", "", Me.EditUrl(), False, SecurityAccessLevel.Edit, True, False)
                End If
                ' 该操作总是赋予具有Host权限的用户
                Actions.Add(Me.GetNextActionID(), Localization.GetString("ModuleOptions", LocalResourceFile), ModuleActionType.ContentOptions, "", "", Me.EditUrl("Module_Options"), False, SecurityAccessLevel.Admin, True, False)
 
                Return Actions
            End Get
 End Property
2)有时我们需要在dll程序集中嵌入资源文件,比如CSS文件,那我们可以在Assembly.cs(或Assembly.vb)添加CSS文件并设置该文件属性为嵌入资源,然后你在模块控件加载时初始化如下,这样编译的程序集包含该资源文件,部署时只要dll即可:
添加嵌入资源
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
            Dim CSSLinkID As String = "Editor"
            Dim CSSLink As String = Page.ClientScript.GetWebResourceUrl(Me.GetType(), "Editor.css")
            If Not String.IsNullOrEmpty(CSSLink) Then
                Dim phCSS As Control = Page.FindControl("CSS")
                If Not phCSS Is Nothing Then
                    If Page.Header.FindControl(CSSLinkID) Is Nothing Then
                        Dim styleLink As New HtmlControls.HtmlLink
                        With styleLink
                            .ID = CSSLinkID
                            .Attributes("rel") = "stylesheet"
                            .Attributes("type") = "text/css"
                            .Href = CSSLink
                        End With
                        phCSS.Controls.AddAt(0, styleLink)
                    End If
                End If
            End If
End Sub
3)有时需要获取所有页面Tab(排除隐藏及其删除的页面Tab),然后从中选取你需要的模块进行整合等等相关操作,那么如下方法可能就是你需要的:
获取Tab页面
Private Function LoadPortalTabs() As ArrayList
      Dim arrTabs As New ArrayList
      Dim objTab As TabInfo
      Dim arrPortalTabs As ArrayList = GetPortalTabs(PortalSettings.DesktopTabs, False, False)
      For Each objTab In arrPortalTabs
        If PortalSecurity.IsInRoles(objTab.AuthorizedRoles) Then
              arrTabs.Add(objTab)
        End If
     Next
    Return arrTabs
End Function
我们会不断在网站中添加在模块开发过程经常会用到的方法或相关技巧...Enjoy DNN Developing!
Copyright ©2007 dnnsun.com(sun wangji)
Popular tags: Utility
Previous Entry: DNN Object Hydrator -- CBO解析
Next Entry: DNN今日之影响力

Comments

Was it good for you, too? Join the discussion »

leave a reply

About the author
Baldwin's Status
 Contact Me
Baldwin Sun
Senior Developer for dnn solution & founder of SunBlog module...
网站主页
dnnsun
最新评论
  1. Re: "暴力"解决DNN无法登陆的问题

    你好 有个问题 我改了登录界面后能登录 但是一点注册 就跳到了HOME页 这个怎么解决

    --zl24622

  2. Re: 你的dnn站点慢了么?

    需要你把旁边的checkbox勾选上再执行 :)

    --Baldwin

  3. Re: 你的dnn站点慢了么?

    为什么,我将你的代码copy到host>sql中去执行之后,报错呢,语句是不是有问题哦?

    --claire

  4. Re: 剖析DNN架构-开篇之作

    很好

    --vling83

  5. Re: SunBlog更新:增加3D Tag Clouds插件

    在以上评论已说明, SunBlog已经是一个成熟的商业模块,如果需要授权或下载请邮件联系我们, 感谢你的关注, 我们即将推出一个demo的站点(这周之内).

    --Baldwin

  6. Re: SunBlog更新:增加3D Tag Clouds插件

    这个没地方下载的吗,要怎么才能下载到,谢谢

    --Sun key

  7. Re: SunBlog更新:增加3D Tag Clouds插件

    已经电邮您了,请注意查收

    --sunny0315

  8. Re: 如何添加DNN模块的自定义权限

    你只要设置好该节点即可, 比如:DnnSun.SunBlogNuke.Business.InterfaceController, DnnSun.Modules.SunBlogNuke 其他的请再详细看看本文,我觉得说得蛮清楚的 :)

    --Baldwin

Blog搜索
Rss Feed
feedsky
抓虾
pageflakes
newsgator
哪吒
相册库
更多照片请查看相册库
我们的服务
  • DotNetNuke 咨询
  • Web设计及其模块开发
  • 免费建站
  • 电子商务
  • 开拓市场
我们致力于开发定制的web 2.0 ,所服务的客户主要包括小中型企业,社区俱乐部及其非盈利机构组织。我们将利用开源的DNN作为我们核心的系统机制,更多相关信息...
版权声明
本站任何言论仅代表个人观点,与作者所在的公司没有任何关系,所有贴子皆以“现状”提供且没有任何担保,同时也没有授予任何权利。