在此列举一些在开发Ajax模块中的技巧及其相关Utility方法.
1) 检测并注册Ajax
2) dnn.js的加载问题,作为dnn核心的ClientAPI,大名鼎鼎,我想大家都知道,它主要负责客户端脚本和服务器端的交互通讯,其中包括隐藏变量的注册,服务器控件的客户端事件的激发等等。DNN默认的Webcontrols就是充分利用ClientAPI来实现的,包括dnnMenu, dnnTree等等,页面的拖拽功能也是如此。在此我倒不是详细讨论ClientAPI的功能和用法,只是稍微提一下在开发过程需要注意的一点,那就是dnn.js脚本的加载,该脚本是有条件加载的,也就是说你不能假定你任何时候都可以使用dnn.js文件里定义的方法, 比如最常见的dnn.getVar方法。一般注册用户登录时页面并没有加载dnn.js默认只是加载了dnncore.js,你不妨做个试验,那就是用某一注册用户登录dnn,并察看页面源代码,你会发现是不存在dnn.js脚本文件的。例如, 如果你的容器皮肤文件是使用dnnMenu的话,那么dnnMenu控件会要求dnn.js的加载,当然因为dnnMenu只有在admin/host用户登陆时才呈现,所以dnn.js也只有在这种情况下才会被注册.这就是我刚才提到的问题所在.那么解决方案就是我们只能在开发过程假设必须使用到dnn.js的话,就得手动地注册它。比如在Page_Load事件里添加:
接下来,你就可以畅通无阻的使用dnn.js了,比如你可能最常见可能是注册某个隐藏变量,然后在客户端从脚本获取:
比如最近项目我是如此利用这些功能的,在此提供一个例子: