快速业务通道

BlogEngine.Net架构与源代码分析系列part14:实现分析(下)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
时,发现这个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;
2document.body.onmouseup = stop_dragDropElement;
3document.body.onselectstart = cancelSelectionEvent;
4document.body.ondragstart = cancelEvent;
5window.onresize = repositionDragObjectArray;

当鼠标onmouseup时执行stop_dragDropElement,在stop_dragDropElement中通过调用saveData,saveData使用上文提到的CreateCallback完成服务器端的回调,其中saveString就是已排序的字符串,主要用于发送给服务器端程序处理。

总结

实际上在BlogEngine.Net的Web站点中还有很多比较有用的东西值得我们去研究,例如FilterByApml的实现,对文章的评分,邮件的发送等,这里就不做更多的讨论。关于在线评论预览我个人觉得没有必要去回调服务器,完全可以由客户端搞定,不知道大家是怎么想的。那个Widget的排序一直都深深的吸引着我,这种处理我见得很少,所以拿出来分享。

在本系列的最后一篇文章中我会就BlogEngine.Net的优秀部分和不太推荐的部分做一个总结,并谈一下我对它的感受,希望大家继续关注。

坚持写完,坚持看完。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号