DNN命名空间与常用API
2014-10-08 22:22
417 查看
DotNetNuke是一个开源CMS系统框架,你可以在基础上扩展并实现各种功能, 而其中不可或缺的就是核心API, 它是在开发过程中最有力的辅助工具, 而了解API最基本的步骤就是API组织起来的命名空间。
DNN 命名空间
DotNetNuke.Common: 可被用于整个DNN应用程序的所有类, 比如其中的Globals实例就是荟萃了所有DNN全局的静态方法, 可被直接用于整个DNN应用程序, 而Globals就位于命名空间DotNetNuke.Common.Globals之下. DotNetNuke.Common是整个应用程序中任何地方都可能用到的类的集合
DotNetNuke.Data: DNN核心数据层, 可被用于扩展数据层, 比如我们最熟悉的DataProvider基类及其API就位于命名空间DotNetNuke.Data之下.
DotNetNuke.Entities: DNN核心实体类, 主要负责实例化和管理组成DNN Portal的核心实体, 其中包括Host, Portals, Tabs, Users, Profile, and Modules. 每一实体都独立分支并形成自己的二级命名空间, 比如负责管理模块的实体类位于DotNetNuke.Modules之下.
DotNetNuke.Framework: DNN框架类, 主要管理一些DNN框架的扩展辅助类, 比如DNN对Ajax的支持, 对CDefault的衍生等等.
DotNetNuke.Security: 主要用于DNN的授权及其验证. 其中包括了页面权限(tab permissions), 模块权限(module permissions), 文件夹(folder permissions), 角色管理(roles manage)等等.
DotNetNuke.Services: DNN核心服务, 比如异常处理, 本地化支持, 用户定制(personalization), 搜索引擎, 缓存优化, Mail分发等等.
DotNetNuke.UI: DNN核心UI, 比如DNN特有的Skin 和 Container就分别位于DotNetNuke.UI.Skins.Skin 和 DotNetNuke.UI.Containers.Container之下, 除此之外,还包含一下些UI设计扩展的辅助类DotNetNuke.UI.Utilities, 大名鼎鼎的ClientAPI就位于该命名空间.
DNN 常用API
1. PortalModuleBase
所属命名空间:DotNetNuke.Entities.Modules,是一个开发DNN模块所必须继承的基类,标志性的基类,在此基类中,你可以得到DNN所为你封装的一些模块基本信息,毋需你多费周折,其中包括当前用户UseID, UserInfo, TabID,
ModulePath, ModuleConfiguration, LocalResourceFile等等。
ModulePath: 模块根目录,可以获取到模块根目录所需要的文件, 例如:ScriptManager scriptManager = ScriptManager.GetCurrent(Page); scriptManager.Services.Add(new ServiceReference(this.ModulePath + "WebService.asmx")); scriptManager.Scripts.Add(new ScriptReference(this.ModulePath + "js/Utility.js"))
LocalResourceFile: 本地化资源文件,默认是关联到模块根目录下的App_LocalResources下对应文件, 比如你开发的模块用户控件为xx_view.ascx, 那LocalResourceFile就是App_LocalResources/xx_view.ascx.resx(或xx_view.ascx.zh-CN.resx),如果你想手动的注册本地化支持,代码可以类似: lblMessage.Text = Localization.GetString("Message", LocalResourceFile)
更高级的应用可能就是设置共享本地化资源,也就是说你可以好些UserControl共享一个资源文件,比如你可以设置一个共享资源文件SharedResources.resx(或SharedResources.zh-CN.resx),专门放置一些公共的本地化键值对设置,然后添加如下方法到你的基类或后台代码,这是一个值得推荐的方法,节省了资源文件的大小(如果说你开发的模块比较复杂的话,文件的统筹规划是必不可少的):
publicstringLocalizationByKey(stringkey,
bool?isSharedResource)
{
varisShared=isSharedResource.HasValue? (bool)isSharedResource :
false;
if(isShared)
{
varSharedResourceFile="resourceFiliRoot";//resourcekeyRoot
returnLocalization.GetString(key,
SharedResourceFile);
}
returnLocalization.GetString(key,
LocalResourceFile);
}
ModuleConfiguration: 当前用户控件所在的模块配置信息,比如动态设置模块标题,是否显示模块容器,是否支持打印或聚合等等.比如通过以下代码你就可以动态的修改模块标题:
ModuleConfiguration.ModuleTitle = Localization.GetString("UpdateUserInfo", LocalResourceFile).
AJAX
所属命名空间:DotNetNuke.Framework: DNN核心封装支持Ajax功能的辅助类,其中包含了一些及其有用的方法,比如:
IsInstalled(): MS Ajax是否安装
IsEnabled(): MS Ajax是否激活
RegisterPostBackControl:注册传统PostBack控件
RegisterScriptManager: 注册ScriptManager.
ModuleSettingsBase
所属命名空间:DotNetNuke.Entities.Modules: 这是DNN模块设置的基类,其中主要包含两个方法,LoadSettings和UpdateSettings,当你继承于它时,你所需要就是重写这两个基类方法,方法体实现业务逻辑,关联的数据库表为TabModuleSettings或ModuleSettings,这两个都具有同样的数据结构,存储就是类似哈希表的键值对,所不同只是他们更新数据的方法不一样而已.
Dim objModules As New DotNetNuke.Entities.Modules.ModuleController objModules.UpdateModuleSetting(ModuleId, "timeinterval", txtTimeInterval.Text.Trim.ToString()) Dim objModules As New DotNetNuke.Entities.Modules.ModuleController objModules.UpdateTabModuleSetting(ModuleId, "timeinterval", txtTimeInterval.Text.Trim.ToString())
而当你仔细参看代码,在方法中LoadSettings所使用的Settings实质就是TabModuleSettings和ModuleSettings的合并,当然你也可以自行获取TabModuleSettings或ModuleSettings,dnn给与你更多的控制权:
Public Shadows ReadOnly Property Settings() As Hashtable
Get
If _settings Is Nothing Then
'Merge the TabModuleSettings and ModuleSettings
_settings = Portals.PortalSettings.GetTabModuleSettings(New Hashtable(ModuleSettings), New Hashtable(TabModuleSettings))
End If
Return _settings
End Get
End Property
CDefault( or PageBase)
所属命名空间:DotNetNuke.Framework: PageBase是DNN核心页面基类,而CDefault是对此有所封装的类,两者何时需要主要看你的开发需要,在此我就分别举两个例子
一般模块中的aspx需要继承PageBase,PageBase主要有LocalResourceFile,PortalSettings等属性,比如你模块中存在一个Print.aspx,后台代码可以如此声明:
Partial Public Class Print
Inherits PageBase
End Class
模块里的用户控件如果需要控制页面信息时,可以新增一个属性BasePage,代码如下:
Public ReadOnly Property BasePage() As DotNetNuke.Framework.CDefault
Get
Return CType(Me.Page, DotNetNuke.Framework.CDefault)
End Get
End Property
这时你就可以在用户控件加载时动态修改页面相关属性,比如Title:
Me.BasePage.Title = Me.BasePage.Title & " - " & m_oEntry.Title
或你可以直接如此设置:
'Override the page title
Dim myPage As DotNetNuke.Framework.CDefault
myPage = CType(Me.Page, CDefault)
myPage.Title = Localization.GetString("ControlTitle_YourPage", Me.LocalResourceFile)
Globals
所属命名空间:DotNetNuke.Common: 这是DNN模块开发用得最多的一个静态类,汇聚了DNN核心最基本的静态方法,如果你有心想开发好模块,好好看看这里边的方法,你会有意想不到的收获.比如:
<1>ConvertDataReaderToDataTable:把DataReader转化为DataTable
<2>ConvertDataReaderToDataSet:把DataReader转化为DataSet
<3>NavigateURL:最经典的DNN导航(跳转)函数
<4> SendMail:DNN核心发送邮件方法
<5>FriendlyUrl:友好URL重写方法
<6>GetFileList:获取DNN站点根目录下文件列表,如果你在用UrlControl你会觉得这个方法是你所必须知道的.
CBO ( and Null )
所属命名空间:DotNetNuke.Common.Utilities: 这是DNN模块数据层所必备的一个工具类,对此我也曾专题般的讨论过,合理的使用CBO决定你即将开发的模块的命运,比如扩展性,兼容性,维护代价等等.
Null: If Not Null.IsNull(UserId) Then
DNNClientAPI
所属命名空间:DotNetNuke.UI.Utilities: 这是DNN赫赫有名的一个辅助类,为DNN模块开发客户端脚本和服务器交互起到不可或缺的作用,同时支持本地化使得脚本也真正实现了本地化.最经常使用例如我们需要在点击某一个删除按钮弹出提示信息,如今在DNN模块及其简单,就是一句代码即可:
ClientAPI.AddButtonConfirm(cmdAddComment, LocalizationByKey("cmdDeleteCommentMessage"))
在此再举一个比较经典的应用范例,有时我们需要在客户获取目标控件并对此操作,可由于ASP.Net(DNN)在生成页面时已自动生成客户端代码,比如某一TextBox控件screenName最终可能会生成类似dnn_ctr431_QuickLogin_screenName,如果你在客户端脚本中直用document.getElementById('cmdHome')获取该控件的话,只会返回一个undefined或null,这时就需要我们在客户端注册一个页面ID前缀,而DNN早为我们想到了,那就是dnn.js脚本为我们提供两个方法dnn.gerVar和dnn.setVar,具体流程就是首先在页面注册页面前缀:
ClientAPI.RegisterClientReference(this.Page, ClientAPI.ClientNamespaceReferences.dnn);
ClientAPI.RegisterClientVariable(this.Page, "Container_ID", this.ClientID + "_", true);
然后在脚本中你可以直接得到你想要的控件对象:
var _ModuleContainer;
if( typeof(_ModuleContainer) == 'undefined' ) _ModuleContainer = dnn.getVar('Container_ID');
var screenName = $get( _ModuleContainer + 'screenName').value;
8. HtmlUtils
HtmlUtils is a Utility class that provides Html Utility methods.
包含Html有关操作的常用方法。
Clean;清除Html标签,RemovePunctuation参数表示是否同时清除标点符号
FormatEmail;将email地址转化为<a href="mailto:Email">Email</a>,并对其编码,以防止被网页爬虫类式的软件获取,以保护隐私信息。
FormatText;将Html中的<br/>标签转化为换行符。RetainSpace参数表示是否将被替换掉的地方保留空格。
FormatWebsite;将网站地址转换为<a href="Website">Website</a>形式。
Shorten;输出指定长度的文本。suffix表示被截断部分的后缀形式,例如:“...”
StripTags;清除Html标签,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripPunctuation;清除标点,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripWhiteSpace;清除空格字符,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripNonWord;清除非字符,RetainSpace参数表示是否将被替换掉的地方保留空格
9. UrlUtils
URl操作方法集合类。
UrlUtils.PopUpUrl(DNN弹出页面方法)
10. Host
包含Host的属性信息。
11. PortalAliasController
获取DNN站点Alias方法:
var ctlPortalAlias = new PortalAliasController();
var arrPortalAlias = ctlPortalAlias.GetPortalAliasArrayByPortalID(0);
var objPortalAlias = new PortalAliasInfo();
foreach (PortalAliasInfo t in arrPortalAlias)
{
objPortalAlias = t;
}
var webAddress = "http://" + objPortalAlias.HTTPAlias;
12. UserController
13. ListController
14. ModuleController
原文链接:
/article/5684414.html
DotNetNuke是一个开源CMS系统框架,你可以在基础上扩展并实现各种功能, 而其中不可或缺的就是核心API, 它是在开发过程中最有力的辅助工具, 而了解API最基本的步骤就是API组织起来的命名空间。
DNN 命名空间
DotNetNuke.Common: 可被用于整个DNN应用程序的所有类, 比如其中的Globals实例就是荟萃了所有DNN全局的静态方法, 可被直接用于整个DNN应用程序, 而Globals就位于命名空间DotNetNuke.Common.Globals之下. DotNetNuke.Common是整个应用程序中任何地方都可能用到的类的集合
DotNetNuke.Data: DNN核心数据层, 可被用于扩展数据层, 比如我们最熟悉的DataProvider基类及其API就位于命名空间DotNetNuke.Data之下.
DotNetNuke.Entities: DNN核心实体类, 主要负责实例化和管理组成DNN Portal的核心实体, 其中包括Host, Portals, Tabs, Users, Profile, and Modules. 每一实体都独立分支并形成自己的二级命名空间, 比如负责管理模块的实体类位于DotNetNuke.Modules之下.
DotNetNuke.Framework: DNN框架类, 主要管理一些DNN框架的扩展辅助类, 比如DNN对Ajax的支持, 对CDefault的衍生等等.
DotNetNuke.Security: 主要用于DNN的授权及其验证. 其中包括了页面权限(tab permissions), 模块权限(module permissions), 文件夹(folder permissions), 角色管理(roles manage)等等.
DotNetNuke.Services: DNN核心服务, 比如异常处理, 本地化支持, 用户定制(personalization), 搜索引擎, 缓存优化, Mail分发等等.
DotNetNuke.UI: DNN核心UI, 比如DNN特有的Skin 和 Container就分别位于DotNetNuke.UI.Skins.Skin 和 DotNetNuke.UI.Containers.Container之下, 除此之外,还包含一下些UI设计扩展的辅助类DotNetNuke.UI.Utilities, 大名鼎鼎的ClientAPI就位于该命名空间.
DNN 常用API
1. PortalModuleBase
所属命名空间:DotNetNuke.Entities.Modules,是一个开发DNN模块所必须继承的基类,标志性的基类,在此基类中,你可以得到DNN所为你封装的一些模块基本信息,毋需你多费周折,其中包括当前用户UseID, UserInfo, TabID,
ModulePath, ModuleConfiguration, LocalResourceFile等等。
ModulePath: 模块根目录,可以获取到模块根目录所需要的文件, 例如:ScriptManager scriptManager = ScriptManager.GetCurrent(Page); scriptManager.Services.Add(new ServiceReference(this.ModulePath + "WebService.asmx")); scriptManager.Scripts.Add(new ScriptReference(this.ModulePath + "js/Utility.js"))
LocalResourceFile: 本地化资源文件,默认是关联到模块根目录下的App_LocalResources下对应文件, 比如你开发的模块用户控件为xx_view.ascx, 那LocalResourceFile就是App_LocalResources/xx_view.ascx.resx(或xx_view.ascx.zh-CN.resx),如果你想手动的注册本地化支持,代码可以类似: lblMessage.Text = Localization.GetString("Message", LocalResourceFile)
更高级的应用可能就是设置共享本地化资源,也就是说你可以好些UserControl共享一个资源文件,比如你可以设置一个共享资源文件SharedResources.resx(或SharedResources.zh-CN.resx),专门放置一些公共的本地化键值对设置,然后添加如下方法到你的基类或后台代码,这是一个值得推荐的方法,节省了资源文件的大小(如果说你开发的模块比较复杂的话,文件的统筹规划是必不可少的):
publicstringLocalizationByKey(stringkey,
bool?isSharedResource)
{
varisShared=isSharedResource.HasValue? (bool)isSharedResource :
false;
if(isShared)
{
varSharedResourceFile="resourceFiliRoot";//resourcekeyRoot
returnLocalization.GetString(key,
SharedResourceFile);
}
returnLocalization.GetString(key,
LocalResourceFile);
}
ModuleConfiguration: 当前用户控件所在的模块配置信息,比如动态设置模块标题,是否显示模块容器,是否支持打印或聚合等等.比如通过以下代码你就可以动态的修改模块标题:
ModuleConfiguration.ModuleTitle = Localization.GetString("UpdateUserInfo", LocalResourceFile).
AJAX
所属命名空间:DotNetNuke.Framework: DNN核心封装支持Ajax功能的辅助类,其中包含了一些及其有用的方法,比如:
IsInstalled(): MS Ajax是否安装
IsEnabled(): MS Ajax是否激活
RegisterPostBackControl:注册传统PostBack控件
RegisterScriptManager: 注册ScriptManager.
ModuleSettingsBase
所属命名空间:DotNetNuke.Entities.Modules: 这是DNN模块设置的基类,其中主要包含两个方法,LoadSettings和UpdateSettings,当你继承于它时,你所需要就是重写这两个基类方法,方法体实现业务逻辑,关联的数据库表为TabModuleSettings或ModuleSettings,这两个都具有同样的数据结构,存储就是类似哈希表的键值对,所不同只是他们更新数据的方法不一样而已.
Dim objModules As New DotNetNuke.Entities.Modules.ModuleController objModules.UpdateModuleSetting(ModuleId, "timeinterval", txtTimeInterval.Text.Trim.ToString()) Dim objModules As New DotNetNuke.Entities.Modules.ModuleController objModules.UpdateTabModuleSetting(ModuleId, "timeinterval", txtTimeInterval.Text.Trim.ToString())
而当你仔细参看代码,在方法中LoadSettings所使用的Settings实质就是TabModuleSettings和ModuleSettings的合并,当然你也可以自行获取TabModuleSettings或ModuleSettings,dnn给与你更多的控制权:
Public Shadows ReadOnly Property Settings() As Hashtable
Get
If _settings Is Nothing Then
'Merge the TabModuleSettings and ModuleSettings
_settings = Portals.PortalSettings.GetTabModuleSettings(New Hashtable(ModuleSettings), New Hashtable(TabModuleSettings))
End If
Return _settings
End Get
End Property
CDefault( or PageBase)
所属命名空间:DotNetNuke.Framework: PageBase是DNN核心页面基类,而CDefault是对此有所封装的类,两者何时需要主要看你的开发需要,在此我就分别举两个例子
一般模块中的aspx需要继承PageBase,PageBase主要有LocalResourceFile,PortalSettings等属性,比如你模块中存在一个Print.aspx,后台代码可以如此声明:
Partial Public Class Print
Inherits PageBase
End Class
模块里的用户控件如果需要控制页面信息时,可以新增一个属性BasePage,代码如下:
Public ReadOnly Property BasePage() As DotNetNuke.Framework.CDefault
Get
Return CType(Me.Page, DotNetNuke.Framework.CDefault)
End Get
End Property
这时你就可以在用户控件加载时动态修改页面相关属性,比如Title:
Me.BasePage.Title = Me.BasePage.Title & " - " & m_oEntry.Title
或你可以直接如此设置:
'Override the page title
Dim myPage As DotNetNuke.Framework.CDefault
myPage = CType(Me.Page, CDefault)
myPage.Title = Localization.GetString("ControlTitle_YourPage", Me.LocalResourceFile)
Globals
所属命名空间:DotNetNuke.Common: 这是DNN模块开发用得最多的一个静态类,汇聚了DNN核心最基本的静态方法,如果你有心想开发好模块,好好看看这里边的方法,你会有意想不到的收获.比如:
<1>ConvertDataReaderToDataTable:把DataReader转化为DataTable
<2>ConvertDataReaderToDataSet:把DataReader转化为DataSet
<3>NavigateURL:最经典的DNN导航(跳转)函数
<4> SendMail:DNN核心发送邮件方法
<5>FriendlyUrl:友好URL重写方法
<6>GetFileList:获取DNN站点根目录下文件列表,如果你在用UrlControl你会觉得这个方法是你所必须知道的.
CBO ( and Null )
所属命名空间:DotNetNuke.Common.Utilities: 这是DNN模块数据层所必备的一个工具类,对此我也曾专题般的讨论过,合理的使用CBO决定你即将开发的模块的命运,比如扩展性,兼容性,维护代价等等.
Null: If Not Null.IsNull(UserId) Then
DNNClientAPI
所属命名空间:DotNetNuke.UI.Utilities: 这是DNN赫赫有名的一个辅助类,为DNN模块开发客户端脚本和服务器交互起到不可或缺的作用,同时支持本地化使得脚本也真正实现了本地化.最经常使用例如我们需要在点击某一个删除按钮弹出提示信息,如今在DNN模块及其简单,就是一句代码即可:
ClientAPI.AddButtonConfirm(cmdAddComment, LocalizationByKey("cmdDeleteCommentMessage"))
在此再举一个比较经典的应用范例,有时我们需要在客户获取目标控件并对此操作,可由于ASP.Net(DNN)在生成页面时已自动生成客户端代码,比如某一TextBox控件screenName最终可能会生成类似dnn_ctr431_QuickLogin_screenName,如果你在客户端脚本中直用document.getElementById('cmdHome')获取该控件的话,只会返回一个undefined或null,这时就需要我们在客户端注册一个页面ID前缀,而DNN早为我们想到了,那就是dnn.js脚本为我们提供两个方法dnn.gerVar和dnn.setVar,具体流程就是首先在页面注册页面前缀:
ClientAPI.RegisterClientReference(this.Page, ClientAPI.ClientNamespaceReferences.dnn);
ClientAPI.RegisterClientVariable(this.Page, "Container_ID", this.ClientID + "_", true);
然后在脚本中你可以直接得到你想要的控件对象:
var _ModuleContainer;
if( typeof(_ModuleContainer) == 'undefined' ) _ModuleContainer = dnn.getVar('Container_ID');
var screenName = $get( _ModuleContainer + 'screenName').value;
8. HtmlUtils
HtmlUtils is a Utility class that provides Html Utility methods.
包含Html有关操作的常用方法。
Clean;清除Html标签,RemovePunctuation参数表示是否同时清除标点符号
FormatEmail;将email地址转化为<a href="mailto:Email">Email</a>,并对其编码,以防止被网页爬虫类式的软件获取,以保护隐私信息。
FormatText;将Html中的<br/>标签转化为换行符。RetainSpace参数表示是否将被替换掉的地方保留空格。
FormatWebsite;将网站地址转换为<a href="Website">Website</a>形式。
Shorten;输出指定长度的文本。suffix表示被截断部分的后缀形式,例如:“...”
StripTags;清除Html标签,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripPunctuation;清除标点,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripWhiteSpace;清除空格字符,RetainSpace参数表示是否将被替换掉的地方保留空格。
StripNonWord;清除非字符,RetainSpace参数表示是否将被替换掉的地方保留空格
9. UrlUtils
URl操作方法集合类。
UrlUtils.PopUpUrl(DNN弹出页面方法)
10. Host
包含Host的属性信息。
11. PortalAliasController
获取DNN站点Alias方法:
var ctlPortalAlias = new PortalAliasController();
var arrPortalAlias = ctlPortalAlias.GetPortalAliasArrayByPortalID(0);
var objPortalAlias = new PortalAliasInfo();
foreach (PortalAliasInfo t in arrPortalAlias)
{
objPortalAlias = t;
}
var webAddress = "http://" + objPortalAlias.HTTPAlias;
12. UserController
13. ListController
14. ModuleController
原文链接:
/article/5684414.html
相关文章推荐
- DNN命名空间与常用API
- 常用命名空间和类
- ASP.Net应用程序中最常用的命名空间包含的类
- 引用 .Net常用命名空间和类介绍
- C# 常用的命名空间及作用
- DotNetNuke.Entities.Users 命名空间下的常用类总结
- 常用命名空间位置
- Visual Studio 2008 常用命名空间
- GDI+图形(图像)处理及常用类库和命名空间
- .Net常用命名空间和类介绍【zz】
- 常用命名空间
- 常用的命名空间介绍
- .NET Framework 常用命名空间总结
- C#常用命名空间和类
- C#常用命名空间和类
- C#常用的命名空间
- 基于C#的MapInfo开发时常用的命名空间总结
- c# 常用命名空间功能解释
- C# 常用命名空间和函数
- dojo 与j Query一些常用API上的命名和参数的对比