DNN模块开发之利器篇:七种武器
- ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
- scriptManager.Services.Add(new ServiceReference(this.ModulePath + "WebService.asmx"));
- scriptManager.Scripts.Add(new ScriptReference(this.ModulePath + "js/Utility.js"));
- Public Function LocalizationByKey(ByVal key As String, Optional ByVal IsSharedResource As Boolean = False)
- If IsSharedResource Then
- Return Localization.GetString(key, SharedResourceFile)
- End If
- Return Localization.GetString(key, LocalResourceFile)
- End Function
- If Not Null.IsNull(UserId) Then
- ModuleConfiguration.ModuleTitle = Localization.GetString("UpdateUserInfo", LocalResourceFile)
- Else
- ModuleConfiguration.ModuleTitle = Localization.GetString("ModuleTitle", LocalResourceFile)
- End If
IsInstalled(): MS Ajax是否安装
IsEnabled(): MS Ajax是否激活
RegisterPostBackControl: 注册传统PostBack控件
RegisterScriptManager: 注册ScriptManager
等等.
现举一个应用例子:
- /// <summary>
- /// Register the background Webservice and js-script.
- /// </summary>
- private void RegisterAjaxWebservice()
- {
- if (DotNetNuke.Framework.AJAX.IsInstalled())
- {
- DotNetNuke.Framework.AJAX.RegisterScriptManager();
- ScriptManager scriptManager = ScriptManager.GetCurrent(Page);
- scriptManager.Services.Add(new ServiceReference(this.ModulePath + "ManageService.asmx"));
- scriptManager.Scripts.Add(new ScriptReference(this.ModulePath + "Utility.js"));
- }
- }
- 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())
- 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
- Partial Public Class Print
- Inherits PageBase
- End Class
- Public ReadOnly Property BasePage() As DotNetNuke.Framework.CDefault
- Get
- Return CType(Me.Page, DotNetNuke.Framework.CDefault)
- End Get
- End Property
- 'Override the page title
- Dim myPage As DotNetNuke.Framework.CDefault
- myPage = CType(Me.Page, CDefault)
- myPage.Title = Localization.GetString("ControlTitle_YourPage", Me.LocalResourceFile)
<1>ConvertDataReaderToDataTable:把DataReader转化为DataTable
<2>ConvertDataReaderToDataSet:把DataReader转化为DataSet
<3>NavigateURL:最经典的DNN导航(跳转)函数
<4> SendMail:DNN核心发送邮件方法
<5>FriendlyUrl:友好URL重写方法
<6>GetFileList:获取DNN站点根目录下文件列表,如果你在用UrlControl你会觉得这个方法是你所必须知道的.
等等.
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;
如果你还不明白,你可以看我的网站,DNN搭建
DNN模块开发之利器篇:七种武器的更多相关文章
- 面试官的七种武器:Java篇
起源 自己经历过的面试也不少了,互联网的.外企的,都有.总结一下这些面试的经验,发现面试官问的问题其实不外乎几个大类,玩不出太多新鲜玩意的.细细想来,面试官拥有以下七种武器.恰似古龙先生笔下的武侠世界 ...
- 快速开发平台分享-UCML快速开发七种武器
传统的快速开发平台强调的是组件重用.构件重用,主要解决功能重用层面,一般提供了软件开发最常用的功能:表单设计.BPM(业务流程管理).报表.组织机构及权限等功能.但只有功能重用,没有过程重用,要么只能 ...
- Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
Linux就这个范儿 第15章 七种武器 linux 同步IO: sync.fsync与fdatasync Linux中的内存大页面huge page/large page David Cut ...
- UNIX/Linux C 程序员需要掌握的七种武器
我是一名普通的软件工程师,不是什么技术大牛.这篇文章所提到的"七种武器"只是我这些年工作经验的一点体会和感悟,如果有错误的地方,还请大家指正. (一)C语言 作为一名C程序员,熟练 ...
- 让 Python 代码更易维护的七种武器——代码风格(pylint、Flake8、Isort、Autopep8、Yapf、Black)测试覆盖率(Coverage)CI(JK)
让 Python 代码更易维护的七种武器 2018/09/29 · 基础知识 · 武器 原文出处: Jeff Triplett 译文出处:linux中国-Hank Chow 检查你的代码的质 ...
- 百度云世界里的“七种武器”:PCS、BAE、Site App、ScreenX等
如果说去年百度世界的关键词是“百度新首页”的话,那么今年在研发者人群中,对百度世界最深的印象就是“七种武器”,即在云的世界里,百度为开发者所提供的包括个人云存储.LBS.移动云测试中心等在内的七种工具 ...
- ansible七种武器和json
ansible七种武器和json • 第一种武器 – ansible 命令,用于执 ...
- PHP程序猿必备的七种武器
作为一个程序猿(又或者是程序媛),出来闯荡江湖,没有几种必杀技在手,那是肯定无法赢得江湖名声的,除了必杀技之外,武器也是很重要的,但是一把青钢剑,肯定是无法赢得万千少男少女的欢心的.就连小李飞刀,人家 ...
- [转] 前端开发利器--Brackets 的七种武器和旁门左道
转自:http://www.jianshu.com/p/ff7798aa4548 Brackets是Adobe开发的web编辑器,是一款免费开源.多平台支持的软件,并在于GitHub上维护.Brack ...
随机推荐
- [转载]在 Windows 10 中, 如何卸载和重新安装 OneNote App
在 Windows 10 中, 如何卸载和重新安装 OneNote App 15/8/2015 使用 PowerShell 命令卸载 OneNote App 开始菜单 -> 输入 "P ...
- Lua:简单入门
首先,感谢 runoob.com:http://www.runoob.com/lua/lua-tutorial.html 直接用 SciTE 进行文本编辑,F5调试,非常方便. 注意点: 1. 变量的 ...
- poi简单案例
//poi api 操作 public static void main(String[] args) { // TODO Auto-generated method stub // 创建一个工作 ...
- 创建局域网内远程git仓库,并将本地仓库push推到远程仓库中
转载请注明出处 http://www.goteny.com/articles/2014/06/136.html http://www.cnblogs.com/zjjne/p/3778640.html ...
- 关于KeilC51的指针(参见, page 106-113, keil uv2 user's guide 09,2001)
keil中的指针分为两种,一种是普通指针,兼容标准C语言的指针:另一种是我翻译成内存特殊指针(memory-specific pointers,翻译的不好:>) 一.普通指针 普通指针的定义方式 ...
- 【HDOJ】5154 Harry and Magical Computer
拓扑排序. /* 5154 */ #include <iostream> #include <cstdio> #include <cstring> #include ...
- BZOJ2442: [Usaco2011 Open]修剪草坪
2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 500 Solved: 244[Submit][ ...
- HDU 1254 推箱子 BFS
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1254 题目分析: 做这道题,感觉挺简单的,做着做着就错了20次, 我也是醉了, WA到吐的节奏啊! 思 ...
- Delphi String 与wideString 的完美转换
一般来说,String与widestring 的转换是系统自动进行的,但是,考虑如下字符串 s:=#2+#3+#0+#10+#0+#1+#164+#59;,显然S的长度为8,然后执行如下代码 var ...
- [ 转]国内有时抽风,无法更新adt的解决方案
http://www.xidige.com/other/354 最近无意中发现mirrors.neusoft.edu.cn有android的目录,进去还能看到xml文件,所以网络搜索了一下,发现还有另 ...