似乎有不少朋友在下在BlogEngine 1.0的源代码之后会发现居然无法正确编译,因为{SiteRoot}\User Controls\CommentView.cs里的代码遇到了错误:
嗯?第一行代码为什么单引号没有封闭?作者怎么会把一个无法编译的版本发布出去呢?其实问题并非那么简单,不过我们姑且先将单引号补全吧。
编译,通过。进入任意一篇文章。咦,为什么又出现脚本错误了(如下),问题真多啊……
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SMl5Wan5WZn9Gbi9CXvFGa6lXZyZmZlp2Lc12bj91cn9Gbi52YvwVbvNmLzd2bsJmbj5ycldWYtl2Lc9CX6MHc0RHaiojIsJye.png)
打开客户端的代码一看,果然有错误:
官方网站其实也用了Blog Engine,但是进入查看文章页面后却没有发生问题。找到AddComment方法一看,果然!
问题出现了,就是这个古怪的字符“¤”坏了事。由于我们的编辑器无法识别出这个字符,因此就将它和后面的引号一起变成了问号。那么,到底这个符号是做什么用的呢?我们又该如何修改它呢?
经过简单的代码分析(猜测?)就可以发现,这段代码的作用是使用AJAX方式添加评论,那个古怪的字符“¤”的作用是分隔一些信息。因为在添加注释时,作者名、Email、URL、国家和评论内容会拼接成一个字符串并作为body给post到服务器端去,所以需要一个在这些文字中都不出现的字符(串)来作为分隔符。服务器端的代码也出现了问题,也就是因为它需要使用这种特殊字符拆分客户端post过来的内容。
要解决它自然很简单,我们只需要使用一段不会出现在文字中的字符(串)即可。我不希望再用这种特殊的字符,因此我最终将两段代码改成了如下模样:
我使用“?/?/?”替换了那个特殊字符,只要用户在回复评论时不输入这段字符串就好了。
本文转自 jeffz 51CTO博客,原文链接:http://blog.51cto.com/jeffz/59881,如需转载请自行联系原作者