DNN模块开发
在这进行一些DNN模块的设计和发布,其中包括核心的优化及其定制模块的分布等等,如果你有什么关于模块的问题,都可以在此跟我们的团队讨论...
如今DNN的版本很多, 4.x 仍是很普遍, 但5.x也是大势所趋, 让我们吹响DNN 5.x的号角吧, 在此跟大家一块分享最近的活动和情况, 如何优化DNN性能及其速度, 如何找回失去的ModuleConfiguration对象等等.
Read the rest of entry »
在Asp.Net开发过程, 缓存是我们经常遇到的问题, 同样在DNN模块开发中利用好缓存无疑对我们开发的模块是有显著性能提升的效果的。本文将介绍DNN核心API自带的缓存机制及其一些使用方法.
Read the rest of entry »
在开发模块的过程中, 有时也许需要某一自定义的权限, 也就是介乎浏览(View)和编辑(Edit)之间的权限, 比如博客的拥有者, 某一评论或列表的添加者等等, 本文将详细说明这一需求的变更缘由和对应的解决方案.
Read the rest of entry »
最近在研究SunBlog和jQuery的整合, 不敢说有很多成就, 到此为止算是刚入门吧。

jQuery最让我欣喜的是其插件式的开发模式, 这一点几乎和 DNN的模块概念同出一辙。我将陆续写些文章阐述DNN和jQuery, 比如如何开发插件(jQuery Plugin), 如何利用Ajax方式调用Webservice,如何优化UI等等, 今天就简单说说如何开发jQuery插件。
Read the rest of entry »
jQuery以其简洁而著称, 也就是"Do more with less"理念贯穿其中, 我想这是我们需要的, 以最简洁的方式附加一系列的方法和属性甚至事件到某一个DOM节点. 而DNN也打算在5.0版本上整合jQuery, 如此ClientAPI就可以借助jQuery的框架发挥更大的威力和性能, 让我们拭目以待. 当然, SunBlog模块也不甘落后, 目前也在整合jQuery, 就是替代之前使用的Asp.Net Ajax Tookit框架, 在整合j的过程中, 发现jQuery的确可以用更少的代码开发出更强大的功能, 比如Search输入框的水印功能(Watermark), 之前我使用的是Asp.Net Ajax Tookit的TextBoxWatermarkExtender控件, 而如今我只需要几行js代码即可实现同样的feature.
Read the rest of entry »
今天本Blog模块(代号"SunBlog")又新增了一个比较"Cool"的功能, 那就是Window live writer(简称WLW), 有了WLW的支持, 在Blog发布帖子不再如此费劲了(如果你用过DNN的FCKEditor发布信息的话, 我想你会明白我的感受的), 同时也不再担心因为网站服务器不响应而丢失信息了, 丢失信息对于自己辛辛苦苦写好的帖子无疑是致命的打击, 而对于我来说使用WLW最好的一点是它支持扩展的插件应用, 也就是说可以用不同的插件来方便帖子的发布,比如代码高亮提示(这是FCKEditor缺失的), 图片添加甚至你可以很方便的为它添加某些常见的效果(水印, 暗影), 最后还有就是本地备份的功能, 从此你可以更好的维护自己的文章及帖子, 偶尔还可以直接在本地查看浏览。 也许还有更多的好处有待发现 :)
分享如何处理带有分隔符的字符串的一些小技巧, 希望可以给大家一些启示
Read the rest of entry »

今天本Blog模块(代号"SunBlog")又新增了一个比较"Cool"的功能, 那就是TagCloud, 我们在Web 2.0经常提及的热点标签功能, 这也是大部分Blog应用(比如SubText,BlogEngine.NET)具有的功能(feature),故SunBlog也考虑进来,方便用户获取到自己比较关注的信息,希望大家喜欢,给予更多的反馈...
what is tag cloud? (更多关于tag cloud信息可访问
http://en.wikipedia.org/wiki/Tag_cloud)
A tag cloud or word cloud (or weighted list in visual design) is a visual depiction of user-generated tags, or simply the word content of a site, used typically to describe the content of web sites. Tags are usually single words and are typically listed alphabetically, and the importance of a tag is shown with font size or color. Thus both finding a tag by alphabet and by popularity is possible. The tags are usually hyperlinks that lead to a collection of items that are associated with a tag.
gravatar feature demo:
今天对本Blog(代号"SunBlog")新增了一个功能: 用户评论和
gravatar的整合, 也就是用户可通过关联自己在gravatar网站的Email获取到avatar, 从而可显示自己的头像在评论中, 这是大部分Blog应用(比如SubText,BlogEngine.NET)具有的功能(feature), 故SunBlog也考虑进来, 如此更强调用户的参与和交互, 希望大家喜欢,给予更多的反馈...

在DNN模块开发过程中,写存储过程可算是一个基本功,一开始你可以copy & paste, 但毕竟有些麻烦,每次都得去查找,如果你足够细心,不妨做个记录,这样省时省力,在此分享一下本人模块开发过程可能需要的SQL语句,比如如何添加字段,如何更新表结构,如何添加SQL函数,如何关联外键等等.
Read the rest of entry »
不知道大家是否用过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这一属性来维护,一般维护代码如下:
- If Not Request.Params("categoryid") Is Nothing Then
- m_sViewType = "category"
- m_oCateggory = CategoryController.GetCategory(CType(Request.Params("categoryid"), Integer))
-
- _Querystring += "categoryid=" & Request.Params("categoryid").ToString()
- End If
-
- If Not Request.Params("BlogDate") Is Nothing Then
- m_dBlogDate = CType(Date.Parse(Request.Params("BlogDate")), Date)
- _Querystring += "BlogDate=" & m_dBlogDate.ToString()
- If Not Request.Params("DateType") Is Nothing Then
- m_sViewType = Request.Params("DateType")
- _Querystring += "BlogDate=" & m_sViewType
- End If
- End If
-
-
- ctlPagingControlBottom.QuerystringParams = Querystring