代码改变世界

随笔分类 - *Most Practical*

十分钟内学会:控制浏览器是否缓存网页状态

2009-10-09 14:59 by Cat Chen, 7465 阅读, 收藏, 编辑
摘要:Question在Firefox等浏览器中,如果你打开一个页面并进行若干操作,例如在文本框进行输入,甚至点击按钮进行Ajax操作更新页面局部,这些操作的结果都会被缓存下来。在你点击链接离开这个页面后,如果你通过后退按钮回到这个页面,你会发现它仍出于你离开时的状态,而非页面刚刚加载好后的初始状态。在一些情况下,这样的缓存方式是符合我们预期的;但在另外一些情况下,我们更希望页面恢复到初始状态,或者说让... 阅读全文

十分钟内学会:避免用户刷新导致重复POST提交

2009-04-03 11:56 by Cat Chen, 4556 阅读, 收藏, 编辑
摘要:Question在Web应用中,采用POST提交信息是非常常见的,然而如果目标页面打开得太慢,用户就可能会刷新页面,这时候之前已经提交过的信息就会被重复提交。即使用户成功打开了POST提交目标页,之后他通过链接导航到别处了,再退回到POST提交目标页时仍可能会重复提交页面(例如因为浏览器缓存已失效)。而且,只要碰到重复POST提交的场景,浏览器就会问用户是否确认重做此操作,用户并不一定能正确理解重... 阅读全文

十分钟内学会:自动识别GB2312与UTF-8编码的文件

2007-03-22 14:08 by Cat Chen, 6571 阅读, 收藏, 编辑
摘要:Question在简体中文系统中,我们有时候需要打开一个保存在磁盘上的纯文本文件,例如txt,但却不知道其保存编码,该怎么办呢?如果文本只需要在Windows上显示,那就很幸运了,因为无论是GB2312还是UTF-8编码的string都能够正确显示。但如果需要输出到ASP.NET页面上就不是那么简单了,因为如果页面编码为UTF-8但纯文本文件导入的string是GB2312,那就会导致乱码,反之亦... 阅读全文

十分钟内学会:将HTML格式化为合法的XML

2007-02-07 12:14 by Cat Chen, 9115 阅读, 收藏, 编辑
摘要:Question在网站中需要引入来自外部的HTML,这是很正常的事情。例如允许用户采用HTML直接发表时,或者聚合外部的Feed时,这时候外部的HTML就直接嵌入到我们的代码中。如果我们的网站是设计为符合XHTML的,那就可能因为引入外部HTML而破坏掉XHTML的合法性,甚至连合法的XML都做不到。这时候我们就需要将外部的HTML格式化为合法的XML,以方便我们的处理。Answer要将HTML转... 阅读全文

十分钟内学会:根据数据库生成站点导航

2006-12-29 22:28 by Cat Chen, 7930 阅读, 收藏, 编辑
摘要:Question上次的《十分钟内学会:存储在二维表的树结构如何进行指定深度节点的查询》提到用树结构表示无限分级的商品分类或论坛板块,也就是说这种树结构常常用于存储与导航相关的信息,该如何让网站导航自动按照数据库中存储的树结构自动生成呢?Answer继承自SiteMapProvider要实现站点导航,在ASP.NET 2.0中最方便的就是SiteMap功能了。如果仅仅使用XmlSiteMapProv... 阅读全文

十分钟内学会:让你的博客文章也有机会成上Digg头版

2006-12-16 22:42 by Cat Chen, 5138 阅读, 收藏, 编辑
摘要:是否非常羡慕别人的文章有机会冲上Digg头版,接着带来大量的访客呢?是否也希望自己的文章也能受到链接的宠爱,从而获得更高的PageRank呢?好,跟我来,让我帮你把文章接入到Social Software中。 首先,你知道Social Software是什么吗?从广义上来说,就是能够让人们联系或聚集到一起的软件,老式的邮件列表或者新闻组也算是,然而通常我们用它指现代的blog和wiki平台。我们正... 阅读全文

十分钟内学会:存储在二维表的树结构如何进行指定深度节点的查询

2006-12-12 00:36 by Cat Chen, 9902 阅读, 收藏, 编辑
摘要:Question 在设计ASP.NET网站时,无限分级的商品分类或者论坛板块都可以使用树结构表示,存放到关系型数据库时大家也懂得用Id和ParentId两个字段来表示节点间的关系。 然而这种最省存储空间的表示方法却不是最有效率的,在需要查询指定深度节点时就会遇到问题。我们需要通过递归来逐层展开才能获取到所有该层的节点,然后再在其中进行查询实在既浪费时间又浪费空间。那么有没有更好的做法呢? Answ... 阅读全文

十分钟内学会:无刷新的页面间导航

2006-12-10 14:18 by Cat Chen, 7297 阅读, 收藏, 编辑
摘要:Question 通过ASP.NET AJAX,我们能够实现页面内无刷新的异步回送。然而我们不可能将功能都放在一个页面里,这样设计非常不方便,动态加载控件的逻辑也复杂,所以还是要在多个页面间导航。可以让这种页面间的导航也无刷新吗? Answer 要页面间导航当然要刷新,这是无法避免的,但我们总不能把原本属于多个页面的逻辑塞在一个页面里吧,所以要想个办法把这些逻辑分开来。这里用到一个小技巧,就是使用... 阅读全文

十分钟内学会:让GridView支持按行选中及多选

2006-11-21 19:34 by Cat Chen, 3803 阅读, 收藏, 编辑
摘要:Question 如何能让GridView支持选中多行?并且PostBack时要能确定哪些行有被选中哪些行没被选中。 Answer 网上关于GridView多选的实现方式的讨论也不少,有一些需要直接输出<input />并指定其name属性,或者需要通过Request.Form获取提交表单的数据,这些都解决方案都无法让我满意。我使用ASP.NET的原则就是,别人封装好的东西绝对不要伸手... 阅读全文