BlogEngine.Net架构与源代码分析系列part14:实现分析(下)
时,发现这个Widget在WidgetZone中的排序被永久存储了,甚至在你清空cookie时依然生效,BlogEngine.Net是在服务器端进行的存储,DataStore的be_WIDGET_ZONE中的Widget的顺序就是在页面上Widget的显示顺序。这实际上是通过间接调用WidgetEditor.aspx中的MoveWidgets方法实现的(前文提及过)。那么在浏览器端是如何处理这些排序问题的呢?
在widget.js中的大部分代码都是用来处理拖放排序的,initdragableElements主要完成使某个Widget可以被拖动的初始化工作,widget.js的最后一句代码addLoadEvent(initdragableElements)使其在页面加载时执行。注意initdragableElements中: 拖动事件的Hookup 1document.body.onmousemove = moveDragableElement; 当鼠标onmouseup时执行stop_dragDropElement,在stop_dragDropElement中通过调用saveData,saveData使用上文提到的CreateCallback完成服务器端的回调,其中saveString就是已排序的字符串,主要用于发送给服务器端程序处理。 总结 实际上在BlogEngine.Net的Web站点中还有很多比较有用的东西值得我们去研究,例如FilterByApml的实现,对文章的评分,邮件的发送等,这里就不做更多的讨论。关于在线评论预览我个人觉得没有必要去回调服务器,完全可以由客户端搞定,不知道大家是怎么想的。那个Widget的排序一直都深深的吸引着我,这种处理我见得很少,所以拿出来分享。 在本系列的最后一篇文章中我会就BlogEngine.Net的优秀部分和不太推荐的部分做一个总结,并谈一下我对它的感受,希望大家继续关注。 坚持写完,坚持看完。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |