快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
catch (e) {}
41 }
42
43 return false;
44}

在线评论预览与评论的提交

结合blog.js与User controls\CommentView.ascx,我们看一下它的处理过程。CommentView可以显示文章的评论列表和提交新评论。当点击Preview时,会调用blog.js中的ToggleCommentMenu:

评论的预览与提交

1// Shows the preview of the comment
2function ToggleCommentMenu(element)
3{
4 element.className = ''selected'';
5 if (element.id == ''preview'')
6 {
7 $(''compose'').className = '''';
8 $(''commentCompose'').style.display = ''none'';
9 $(''commentPreview'').style.display = ''block'';
10 $(''commentPreview'').innerHTML = ''<img src="'' + KEYwebRoot + ''pics/ajax-loader.gif" alt="Loading" />'';
11 var argument = $(''commentPreview'').innerHTML;
12 AddComment(true);
13 }
14 else
15 {
16 $(''preview'').className = '''';
17 $(''commentPreview'').style.display = ''none'';
18 $(''commentCompose'').style.display = ''block'';
19 }
20}
21
22function EndShowPreview(arg, context)
23{
24 $(''commentPreview'').innerHTML = arg;
25}
26
27function AddComment(preview)
28{
29 var isPreview = preview == true;
30 if (!isPreview)
31 {
32 $("btnSaveAjax").disabled = true;
33 $("ajaxLoader").style.display = "inline";
34 $("status").className = "";
35 $("status").innerHTML = KEYsavingTheComment;
36 }
37
38 var author = nameBox.value;
39 var email = emailBox.value;
40 var website = websiteBox.value;
41 var country = countryDropDown ? countryDropDown.value : "";
42 var content = contentBox.value;
43 var notify = $("cbNotify").checked;
44 var captcha = captchaField.value;
45
46 var callback = isPreview ? EndShowPreview : AppendComment;
47 var argument = author + "-|-" + email + "-|-" + website + "-|-" + country + "-|-" + content + "-|-" + notify + "-|-" + isPreview + "-|-" + captcha;
48
49 WebForm_DoCallback(''ctl00$cphBody$CommentView1'',argument, callback,''comment'',null,false);
50
51 if (!isPreview && typeof OnComment != "undefined")
52 OnComment(author, email, website, country, content);
53}
54

请注意isPreview的引入与它的逻辑,这个Preview实际上也是需要回调到服务器端的程序的,之后生成预览的Render,当点击Save时isPreview为false,这时回调服务器端的代码时才真正的保存,然后浏览器回调客户端的AppendComment完成一些初始化工作。CommentView是一个UserControl并实现了ICallbackEventHandler接口,这个接口有两个方法GetCallbackResult和RaiseCallbackEvent,在RaiseCallbackEvent中我们可以看出,提交的评论参数使用"-|-"作为分隔符,经过一系列处理最后将这个新评论的呈现给了_Callback,_Callback由GetCallbackResult返回。浏览端使用WebForm_DoCallback(''ctl00$cphBody$CommentView1'',argument, callback,''comment'',null,false);在这部分里我们只要实现ICallbackEventHandler接口就行了,实现的细节都已经有.Net提供了,感兴趣细节的朋友可以查一查Asp.Net的回调方面的资料。

Widget排序的实现

当我们用鼠标拖住一个Widget移动到某个位置再放开鼠标

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号