Register  |  Login

杂项

对DNN及其相关本网站的一些琐碎事情。

TrimEnd() Vs SubString

分享如何处理带有分隔符的字符串的一些小技巧, 希望可以给大家一些启示

DNN SQL 语句集粹

在DNN模块开发过程中,写存储过程可算是一个基本功,一开始你可以copy & paste, 但毕竟有些麻烦,每次都得去查找,如果你足够细心,不妨做个记录,这样省时省力,在此分享一下本人模块开发过程可能需要的SQL语句,比如如何添加字段,如何更新表结构,如何添加SQL函数,如何关联外键等等.

剖析DNN分页控件

不知道大家是否用过DNN核心自带的分页控件,我想如果用过的话,也许你已碰到类似我将要提到的问题,那就是该分页控件并非像我们所想的那样,利用经典的asp.net框架中的viewstate来响应(postback)用户的操作,它其实是利用一种更为简单的方式: 用url来维护页面参数,这就使得一旦页面回发(postback), 当前页面就会回滚到原始状态,对应的页面参数也会变成初始值,这对于我们来说无疑是痛苦的。也许你不是很清楚这种状况,不妨举个例子看看, 比如你当前页面的url为:http://localhost/dnndev/tabid/65/category/23/default.aspx, 你注意到url里边存在两个参数(tabid和category), 这时如果你在使用DNN核心自带的分页控件,那对应分页控件的页码也许是类似的链接http://localhost/dnndev/tabid/65/currentpage/4/default.aspx, 当你点击该页码时将会跳转到http://localhost/dnndev/tabid/65/currentpage/4/default.aspx,如此一来category/23这参数也随之丢失了。这样的情况在你是纯粹靠拼字符串来激发页面变化的时候更为明显。所以整个页面的URL里边参数都需要考虑如何维护,防止误操作。深入挖掘该分页控件的代码,你会发现参数维护主要是靠QuerystringParams这一属性来维护,一般维护代码如下:
 
  1.  If Not Request.Params("categoryid"Is Nothing Then  
  2.      m_sViewType = "category"  
  3.      m_oCateggory = CategoryController.GetCategory(CType(Request.Params("categoryid"), Integer))   
  4.   
  5.      _Querystring += "categoryid=" & Request.Params("categoryid").ToString()   
  6.  End If  
  7.   
  8.  If Not Request.Params("BlogDate"Is Nothing Then  
  9.      m_dBlogDate = CType(Date.Parse(Request.Params("BlogDate")), Date)   
  10.      _Querystring += "BlogDate=" & m_dBlogDate.ToString()   
  11.      If Not Request.Params("DateType"Is Nothing Then  
  12.          m_sViewType = Request.Params("DateType")   
  13.          _Querystring += "BlogDate=" & m_sViewType   
  14.      End If  
  15.  End If  
  16.     
  17. 'set the QuerystringParams property   
  18. ctlPagingControlBottom.QuerystringParams = Querystring  
我想你也应该猜到了,这其实也是一个拼字符串的过程,更让你难受的需要你考虑到整个页面url有可能包含的参数信息,对于同一页面多个模块这是无法知晓的。故这将是无可避免的Bugs.当然DNN分页控件并非一无是处,至少很好的支持SEO(搜索引擎),编程更简单些,故对于一个页面只有单个模块的话无疑是一种简单方便的选择,就拿本站点的SunBlog模块来说,因为一般页面就包含Blog相关模块,利用DNN分页控件无疑是明智的。不过个人觉得DNN分页控件有点粗糙,可定制性极差,最后独立出来开发一个更轻量级,优化版本(更简洁的HTML代码)的分页控件,它至少符合SunBlog模块的需求了,目前已在Codeplex.com开源http://www.codeplex.com/dnnsuntoolkit,有兴趣者不妨对照着DNN分页控件看看其中区别。使用方式跟DNN分页控件差别不大。
参考链接:
DNN Paging Control使用方法:
http://www.cto20.com/cto20/tabid/647/EntryId/46/DNN-Best-Kept-Secrets-Part-1-DNN-Paging-Control.aspx
DNN Paging Control的缺陷
http://www.dotnetnuke.com/Community/Forums/tabid/795/forumid/118/postid/96091/scope/posts/Default.aspx

Color Picker v1.1 Beta发布

Color Picker
这段有些脱离DNN了, 因为新参与了一个RSS项目,故对DNN的关注和参与有些减少, 不过我月底即将回来, 还是拥抱DNN,研究开源 :)
在此分享一下在该RSS项目应用到的一个小插件'Color Picker', 这是一个颜色选择控件, 可应用了样式的编辑表单, 目前已在CodePlex.com上发布Color Picker v1.1 Beta, 有兴趣者不妨看看, 该控件并非独创而是居于原有的控件修改, 增加了AutoPostback和相应的onColorChanged事件(类似于TextBox控件的onTextChangged事件), 它已在m2land开源的DNNFlashImageRotator得到应用。
Color Picker Demo:
相关链接:
ASP.NET Color Picker Web Server Control(http://www.codeproject.com/KB/custom-controls/WS_ColorPicker.aspx)
免费的Asp.net ColorPicker(http://www.cnblogs.com/m2land/archive/2008/09/08/1280708.html)
DNNFlashImageRotator(http://www.codeplex.com/DNNFIR)

"暴力"解决DNN无法登陆的问题

大家也许看了我之前的一篇文章讲述如何定制DNN登陆页面的文章: 如何定制登陆页面,  然后尝试新建一个页面测试一下, 最后也许误删了该页面的Account Login模块(登陆模块)而导致了你的站点无法登陆, 这时我们怎么回滚这些设置呢? 遗憾的是, DNN并没有对此类问题提供什么好的操作界面或解决方案, 最后还得我们这些DNN Fans(Developer)来挖掘问题的出路和解决方案. 我想大家第一想到方案应该就是直接暴力修改数据库了, 对, 我想在此能分享的也就是暴力解决方案, 其中的原理很简单, 因为DNN默认登陆Url一般可通过这样得到http://yourwebsite/default.aspx?ctl=login (也是原始url, 没有任何Url Rewrite, 如果你深入研究会发现这一页面或是首页或是当前页面), 如果你按照我前边文章定制了登陆页面的话, 那无非就是Portal 的属性LoginTabId 修改为新的页面的TabID( 比如 100, 231), 这时当你点击登陆链接时DNN将根据站点设置跳转到对应的页面, 仔细研读下列代码可知其中奥秘:
 
  1. If PortalSettings.LoginTabId <> -1 And Request.QueryString("override"Is Nothing Then  
  2.         ' user defined tab   
  3.         Response.Redirect(NavigateURL(PortalSettings.LoginTabId, """returnurl=" & ReturnUrl), True)   
  4. Else  
  5.         ' portal tab   
  6.         If PortalSettings.HomeTabId <> -1 Then  
  7.             Response.Redirect(NavigateURL(PortalSettings.HomeTabId, "Login""returnurl=" & ReturnUrl), True)   
  8.         Else  
  9.             Response.Redirect(NavigateURL(PortalSettings.ActiveTab.TabID, "Login""returnurl=" & ReturnUrl), True)   
  10.         End If  
  11.     End If  
  12. End If  
好, 现在你应该也知道如何解决了吧, 有两种方式(都不是独创的, 直接Copy过来, 本着分享的原则, 详细请看相关链接):
1) 如果你有数据库权限, 那就执行这一SQL语句:
 
  1. Update Portals Set LoginTabId=NULL Where PortalId=xx /* xx代表你站点对应的PortalID, 一般是0 */  
最后记得清一下缓存(重启IIS或"修改"Web.config或其他类似方式)
2) 下载这一压缩包(OpenSesame.zip), 解压到站点根目录下, 然后通过Url访问这一文件( http://yourwebsite/OpenSesame.aspx )将自动更新Portal的LoginTabID为null, 从而达到回滚原始设置的目的, 最后记得把这一文件删除了 :) 

本站最新文章索引

为了便于大家直接查找,在此简单汇总一下本人一直以来对DNN研究的相关文章。另外,大家如果有关于DNN方面的问题,也可以在这里提出,我将尽力为大家解答。
第一部分为DNN模块方面, 主要分享一些在DNN模块需要注意的地方,比如如何利用DNN API,优化开发过程,也就是本人一直宣扬的让DNN“物尽所用”的原则:
1 ) DNN核心API简述
2 ) DNN模块开发之利器篇:七种武器
3 ) 开发DNN模块之Utility
4 ) DNN模块开发应用Ajax之Utility
5 ) 一些DNN须知的技巧
6 ) DNN特性之IMC
7 ) DNN Object Hydrator -- CBO解析
8 ) 王者归来—再谈CBO
9 ) 解析DNN新生宠儿DAL
10 ) 解除DNN的传参枷锁
11 ) 在DNN中处理回车键事件
12 ) 一些关于DNN的FAQs(适合New DNNer)
第二部分为DNN皮肤设计, 主要分享DNN皮肤这一概念背后的一些想法及其由此带来的性能优化问题,希望真正做到扬长避短, 同时也稍微涉及到一下在DNN如何设计专业的,符合标准的,纯CSS的皮肤等话题, 有兴趣者不妨参考参考。
1 ) DNN默认核心CSS继承关系解析
2 ) DNN Style Sheet简要总结
3 ) 解析DNN皮肤级别的doctype声明
4 ) DNN登陆注册链接小变身(Skin Object定制开发)
5 ) 展望DNN皮肤前景及其推荐一些皮肤资源
6 ) DNN Skin旅程之琐碎杂想
第三部分为DNN优化专题, 主要分享一些能提升DNN加载速度,优化DNN本身的架构等经验,同时希望大家能借此对DNN有更一步的深入了解, 因为当你在使用某一样产品时,在知道优势时也不妨多关注存在的缺陷和局限,这样你才能规避风险,找到合适的解决方案。
1 ) 你的dnn站点慢了么?
2 ) 如何在DNN创建类IGoogle效果的模块
3 ) 解析DNN新生宠儿DAL
第三部分为DNN最新资讯, 主要分享最新的DNN新闻资讯(比如最近即将发布的Cambrian版本的DNN 5.0)及其本站的一些更新,其中包括中国DNN联盟的最新活动等等.
1 ) Cambrian和Open Force '08专题(不断更新中,敬请关注) 
2 ) 中国DNN联盟正式成立
还有更多更多内容, 不妨关注一下本站,同时希望大家给予更多反馈, 我们会做得更多,而这一切的前提离不开社区的反馈和你们支持。 :)
最后分享一下我一直以来关注DNN社区所收集的Blog站点,其中包括一些很牛的DNN Fans对DNN的独到见解,还有一些就是DNN官方核心团队成员自己的Blog,毋庸置疑, 其所写的文章或随笔都是很有含金量的.很显然,整个关于DNN内容的社区在不断的壮大(相关文章:DNN Content: The growth of community content about Dotnetnuke ),希望在我们中国也应该不甘落后,奋起直追,也算是奥运期间对奥运精神的借鉴和弘扬吧. (资源下载:DNN Blogs链接)

DNN SEO专题

SEO, 是Search Engine Optimization的缩写, 翻译过来是“搜索引擎优化", 直白说就是“针对搜索引擎所做的优化处理工作”。是一种利用搜索引擎的搜索规则来提高目的网站在有关搜索引擎( Google, Baidu, Live Search 等) 内提名的方式。它可以给你的网站带来更多的客户访问量和更高的点击率.  这无疑对于任何一个网站都是处于至高地位的策略.  今天在此将开辟一个专题来谈谈DNN里边的SEO解决方案

中国DNN联盟正式成立

2008年7月27日, 这是一个DNN在中国值得纪念的日子, 这一天, 中国DNN联盟正式成立, 同时, 主题为"我与DNN共成长"的第一届团队活动聚会正式拉开了帷幕, 活动中间, 大家彼此讨论和交流DNN的心得及体会, 展望DNN的发展前景和未来的趋势走向. 我有幸在此聚会结识了不少DNN资深人士及其爱好者, 我想大家的目的都是一样的, 就是想为DNN在中国的推广尽一份力,一份心, 当然我们组织这一活动也是让DNN在国内得到更多的支持, 让更多人加入我们的社区, 共同创造一种学习交流的氛围, 让DNN真正名副其实的"开源". 在此期间, m2land全身心的组织这一活动, 包括发起, 宣传, 布置, 联络等等工作, 为此让我们谢谢m2land, 还有小艾,jeemoo等团队核心的协作和支持. 按照我们的初衷, 就是想通过线下的活动让大家有更多的机会互通有无, 为我们的DNN事业提供更多的机会, 对此我们需要包容所有人的目的和想法, 让大家都能在活动中得到自己需要的东西或达到自己的目标( 或学习 或交朋友 或合作等等).  我们会坚持自己, 让这样的交流活动持续下去, 越办越好, 鼓励更多的人加入我们.
最后我共享一下自己的演示PPT, 因为准备比较仓促, 之后稍微整理了一下, 希望对大家有帮助, 更多的资料我们会不断在论坛中共享给大家. ( 下载地址: 玩转DNN.zip )

[转载] SourceForge可正常访问

经过一个月的屏蔽,世界最大的专业开源软件项目网站SourceForge重新可以正常访问,而此时离北京奥运会开幕仅仅只有两个星期,SourceForge被屏蔽了不多不少整整三十天。
SourceForge做为一个专业编程技术网站被屏蔽,令广大的程序员和开发工程师感到不满,因为中国的程序员下载开源软件项目变得非常困难了,而不得不寻找代理服务器才能下载SourceForge上面的代码,至今没有任何官方的消息证实为何屏蔽SourceForge,而一个月后,也没有官方解释为何解封SourceForge。
现在,令广大程序员欣慰的是,我们的SourceForge又可以访问了,中国的程序员应该为此感到欣慰,因为我们永远也不知道何时它将会再次消失。

站点更新日志-相册库模块

不知你是否注意到没, 本Blog已添加一个新成员, 那就是相册模块, 作为传播信息和承载交流的平台, Blog本身就该给与更多的手段或方式去把信息展示给读者, 并增加与读者的交互, 而所谓"一图胜千字"的理念也应该得于体现, 故此相册模块也就是应运而生了, 主要是利用目前很火的silverlight技术来搭建(后续文章将分享如何在DNN整合silverlight, 如何开发silverlight模块等等, 敬请关注), 同时现在也正值DNN Open Force '08即将隆重登场, 该相册将重点展示一些关于大会的照片和相关DNN的图片, 希望你们也可以分享一下自己看到的, 觉得很有看头的DNN图片(如果有的话), :)
目前该模块还在测试阶段, 图片将陆续更新....

不一样的分页算法

分享一下最近研究分页算法的心得,也就是发现一个比较有意思的算法,也许不是最优的,也不是最好,当然也不推荐使用,但是在此列举一下以博各位一哂...

拥抱PNG(如何在DNN应用PNG格式图象)

png demoPNG 是20世纪90年代中期开始开发的图像文件存储格式,其目的是企图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。流式网络图 形格式(Portable Network Graphic Format,PNG)这一名称来源于非官方的“PNG's Not GIF”,是一种位图文件(bitmap file)存储格式,读成“ping”。PNG用来存储灰度图像时,灰度图像的深度可多到16位,存储彩色图像时,彩色图像的深度可多到48位,并且还可 存储多到16位的α通道数据.

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作为我们核心的系统机制,更多相关信息...
版权声明
本站任何言论仅代表个人观点,与作者所在的公司没有任何关系,所有贴子皆以“现状”提供且没有任何担保,同时也没有授予任何权利。