二十四画生的Blog


        ——开始学习Orchard框架
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  DNN做为一个功能强大的网站框架,它提供了提供了很多有用的类来为开发模块提供方便,以下列出几个和模块开发紧密相关的类:

PortalModuleBase
说明:模块基类。所有的模块都是通过该类继承而来。这个类定义了DNN模块所要用到的方法和属性。
命名空间:DotNetNuke.Entities.Modules
文件位置:Components\Modules\PortalModuleBase.vb
常用方法:
EditUrl:根据模块定义的ControlKey获取访问相应控件的Url。我们要调用在模块定义中定义的控件都可以通过该方法实现。
重载列表
Public Function EditUrl() As String;默认调用ControlKey=Edit的控件,不传递参数,一般用于新建。
Public Function EditUrl(ByVal ControlKey As String) As String;调用指定ControlKey的控件。
Public Function EditUrl(ByVal KeyName As String, ByVal KeyValue As String) As String;调用ControlKey=Edit的控件,可传递一个名为KeyName值为KeyValue的参数。如编辑文章时,我们就可以通过EditUrl("ArticleID",ArticleID)的方法调用编辑文章的控件
Public Function EditUrl(ByVal KeyName As String, ByVal KeyValue As String, ByVal ControlKey As String) As String;调用指定ControlKey的控件,并传递名为KeyName值为KeyValue的参数。比如:在查看文章时,我们定义一个ControlKey=Show的控件,然后通过EditUrl("ArticleID",ArticleID,"Show")的方法就可以调用文章查看控件了.
Public Function EditUrl(ByVal KeyName As String, ByVal KeyValue As String, ByVal ControlKey As String, ByVal ParamArray AdditionalParameters() As String) As String;当有多个参数需要传入控件的话,我们就需要用这个方法。比如:我们在查看控件的时候需要,在传入一个A参数,那么我们可以通过EditUrl("ArticleID",ArticleID,"Show","A=Avalue"),如果还要传递更多参数,可以通过先定义一个string数组,然后将需要传递的参数,存到这个数组中。
如:
Dim params(2) As String
params(0) = "A=Avalue"
params(1) = "B=Bvalue"
strUrl = EditUrl("ArticleID",ArticleID,"Show",params)
属性:
Actions;模块所具有的操作集合,可以通过实现IActionable接口来定义模块操作,如:添加一个“新建文章”的操作。这些操作将会显示到模块的以下位置:


IsEditable;获取当前用户是否有该模块的编辑权限
LocalResourceFile;设置或获取当前控件对应的语言资源文件
ModuleId;获取模块ID
PortalAlias;获取当前站点的别名
PortalId;获取当前站点ID
Settings;获取模块设置参数集合。我们可以通过设置模块来定义这个模块的相关参数。例如:我们将通过设置模块设置该文章模块列表文章的每页数量。
UserId;获取当前用户ID
UserInfo;获取当前用户信息

ModuleSettingsBase
说明:设置模块基类。继承与模块基类,拥有模块基类的所有属性和方法,并对其进行扩充。
命名空间:DotNetNuke.Entities.Modules
文件位置:Components\Modules\ModuleSettingsBase.vb
常用方法:
Public Overridable Sub LoadSettings();设置模块需要重写这个方法,用来实现读取模块设置。
Public Overridable Sub UpdateSettings();设置模块需要重写这个方法,用来实现添加更新模块设置。
属性:
ModuleSettings;模块参数的设置集合
TabModuleSettings;页面模块参数的设置集合
这里我们要了解DNN中的一个概念才好理解这个两个参数的区别。我们可以在页面中添加一个模块,并且可以我们还可以用添加一个已经存在模块的方法把这个模块添加到其他页面上。象这样添加的模块,在数据读取上是一致的,我们只是添加了一个新的模块显示,而不是一个新的模块。如果添加的是新模块那么ModuleId是不同的,如果添加的是一个已经存在的模块,那么ModuleId是相同的,不同的是TabModuleId。也就是说ModuleSettings,应用于同一个ModuleId的模块,TabModuleSettings,应用于每一个TabModuleId的模块,即使是同一个模块也可以在不同的地方设置不同的参数。

Globals
说明:包含一些通用的方法。
命名空间:DotNetNuke.Common
文件位置:Components\Shared\Globals.vb
常用方法:
FriendlyUrl;获取Url友好表现形式
NavigateURL;用于获取页面的Url,在DNN中每一个页面都是由一个TabID来标识的。我们可以通过TabID定位到指定页面。模块开发中最常用的是NavigateURL(),用于获取当前TabID的页面,主要用于返回操作。
SendMail;发送邮件(新版DNN中已经移动到Services.Mail.Mail类)
SendNotification;和发送邮件一样(新版DNN中已经移动到Services.Mail.Mail类)
属性:
HostPath;主机路径
HostMapPath;主机物理路径
HostSettings;主机设置集合

Null
说明:提供数据的空值形式。主要用于和数据库中空值进行转换。
命名空间:DotNetNuke.Common.Utilities
文件位置:Components\Shared\Null.vb
常用方法:
IsNull;判断是否为空值

HtmlUtils
说明:包含Html有关操作的常用方法。
命名空间:DotNetNuke.Common.Utilities
文件位置:Components\Shared\HtmlUtils.vb
常用方法:
Clean;清除Html标签,RemovePunctuation参数表示是否同时清除标点符号
FormatEmail;将email地址转化为<a href="mailto:Email">Email</a>,并对其编码,以防止被网页爬虫类式的软件获取,以保护隐私信息。
FormatText;将Html中的<br/>标签转化为换行符。RetainSpace参数表示是否将被替换掉的地方保留空格。
FormatWebsite;将网站地址转换为<a href="Website">Website</a>形式。
Shorten;输出指定长度的文本。suffix表示被截断部分的后缀形式,例如:“...”
StripEntities;还没搞懂,希望有知道回复以下:)
StripTags;清除Html标签,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripPunctuation;清除标点,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripWhiteSpace;清除空格字符,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripNonWord;清除非字符,RetainSpace参数表示是否将被替换掉的地方保留空格。

PortalSecurity
说明:安全和身份验证相关的类。
命名空间:DotNetNuke.Security
文件位置:Components\Security\PortalSecurity.vb
常用方法:
IsInRole;判断当前用户是否具备某一角色,如:PortalSecurity.IsInRole("Role1")
IsInRoles;判断当前用户是否在某一组角色中,如:PortalSecurity.IsInRoles("Role1;Role2")

Localization
说明:提供多语言支持
命名空间:DotNetNuke.Security
文件位置:Components\Localization\Localization.vb
常用方法:GetString;获取指定参数的本地语言字符串,如:Localization.GetString("My.Text", Me.LocalResourceFile)
有关更多本地化的信息请看这篇文章:《DNN中的本地化——打造全球通用的程序

Exceptions
说明:记录处理异常。
命名空间:DotNetNuke.Services.Exceptions
文件位置:Components\Exceptions\Exceptions.vb
常用方法:ProcessModuleLoadException;处理模块加载时的异常。这个方法可以根据用户身份决定是否显示详细的异常信息,并可以根据网站设置决定是否记录异常。

Skin
说明:皮肤相关的类
命名空间:DotNetNuke.UI.Skins
文件位置:admin\Skins\Skin.vb
常用方法:AddModuleMessage;添加一个消息到模块上,如:在查看文章时没有该文章是我们可以给出提示。


  在DNN的模块开发过程中基本上就是通过这几个类提供的方法来实现了。这几个类封装了DNN中的大多数功能,为我们提供了简单的访问接口,使我们开发DNN模块基本上不用去了解DNN的内部实现。但为了更好的理解和使用DNN,我们还是需要更深入的透过这些类去了解DNN中更核心更基本的东西。从DNN的核心类设计上去了解DNN开发者的架构艺术,去学习和掌握面向对象的程序设计和多种设计模式的灵活运用。在下一篇《DNN模块开发系列文章(5)——DNN中的通用控件》中我将介绍一些DNN中定义的一些通用控件,为我们开发真正具有DNN风格的模块进一步打好基础。

 


系列文章导航:
DNN模块开发系列文章(1)——分析设计
DNN模块开发系列文章(2)——建立模块开发项目
DNN模块开发系列文章(3)——在DNN中添加模块定义
DNN模块开发系列文章(4)——与模块开发相关的类