代码改变世界

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

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

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

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

随需写作 / On Demand Writing

2006-12-07 19:23 by Cat Chen, 3668 阅读, 0 推荐, 收藏, 编辑
摘要:Cat in dotNET从今天开始提供On Demand Writing服务(beta),如果您希望我在将来的文章讨论某个您感兴趣的主题,您可以到On Demand Writing Wish List写下您的建议,然后我会尽快对该建议给出答复。在我看到Wish List的建议主题后,我首先会考虑我对该主题是否足够的熟悉,是否已经做了充足的研究。如果我对该主题不熟悉,并且短时间内不准备深入研究,我... 阅读全文

深入理解 ASP.NET 与客户端缓存 (Part 2 - ASP.NET 支持)

2006-12-07 02:09 by Cat Chen, 7203 阅读, 0 推荐, 收藏, 编辑
摘要:在上一篇中,我们知道了HTTP属性与客户端缓存的关系,现在就可以着手用ASP.NET来控制这种缓存。需要注意的是,ASP.NET的Cache是用于服务器端缓存的,所以和我们正在讨论的事情完全无关,我们在这里要讨论的是如何通过HTTP属性控制客户端缓存。页面缓存在ASP.NET中,如果你需要添加HTTP属性,可以使用HttpResponse.AppendHeader方法,例如在Page的代码中直接执... 阅读全文

深入理解 ASP.NET 与客户端缓存 (Part 1 - HTTP 协议)

2006-12-06 21:45 by Cat Chen, 5856 阅读, 3 推荐, 收藏, 编辑
摘要:前言这个系列的文章要讨论的是如何通过ASP.NET服务器端技术来优化客户端缓存策略,而且让这种策略变得可配置和可扩展。我们要了解的知识从HTTP协议中相关属性对客户端缓存的影响,到ASP.NET如何控制这些属性来实现我们的缓存策略。HTTP基础知识由于讨论涉及到客户端缓存,所以还是先要简单介绍一下HTTP协议是如何控制客户端缓存的,这里涉及到HTTP头的Last-Modified、ETag等属性。... 阅读全文

对博客园 URL 的一些调整建议

2006-12-04 00:19 by Cat Chen, 4101 阅读, 0 推荐, 收藏, 编辑
摘要:在博客园里,每一个人的文章都有两个URL,一个是以username.cnblogs.com开头的,另一个是以cnblogs.com/username开头的(前面是否有www都可以)。默认的文章链接都是指向以后者开头的地址,而个人首页则指向username.cnblogs.com,这其实对用户的博客优化造成了很大的障碍。 搜索引擎友善 不知道什么时候开始,搜索引擎优化(SEO)成了绝对的贬义词,大概... 阅读全文

AJAX 在中文社区的“集体信仰动摇”?!

2006-12-03 16:37 by Cat Chen, 4338 阅读, 1 推荐, 收藏, 编辑
摘要:最近好像在中文社区又多了关于AJAX的讨论,很多都是说AJAX仅仅是过渡技术,又或者说AJAX现在有些滥用了,反正就好像一场狂热下来大家又成了怀疑论者了。Microsoft Expression看起来最震撼的事情应该是Microsoft Expression系列被越来越多人知道,很多人都在想WPF在如此强大的设计器支持下能否干掉AJAX。首先说一下Microsoft Expression是什么,这... 阅读全文

英语阅读推荐:主题切换控件 & ExpressionBuilder

2006-12-02 22:51 by Cat Chen, 3387 阅读, 0 推荐, 收藏, 编辑
摘要:这里是Cat in dotNET的Random Clippings系列,专门向大家推荐.NET相关的英文技术文章,每期推荐两篇文章,第一篇适合于英语技术文章阅读的入门者练习阅读能力,而第二篇则适合于进阶练习与技术学习。主题切换控件 (Theme Switcher Control)大家都用过ASP.NET 2.0的主题了吧,在为网站增加几个不同的主题后很多人都会发现了一个问题,那就是系统不提供一个控... 阅读全文

从 ASP 到 ASP.NET (Part 3 - 后记)

2006-11-24 00:09 by Cat Chen, 1993 阅读, 0 推荐, 收藏, 编辑
摘要:首先要说明,题目原本是《从熟练的ASP程序员到熟练的ASP.NET程序员》,不过我觉得太长了所以删减了。这篇是后记,不再会提及任何技术细节,需要说的只是如何到达“熟练”甚至是“精通”的境界。使用造就熟练在ASP.NET 2.0发布一年后才来发表这个系列的文章,距离ASP.NET 1.0发布已经有4年了,可能很多人都会觉得太晚了。其实还不算太晚吧,因为... 阅读全文

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

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

Blog Refactoring (Volume 2)

2006-11-20 20:43 by Cat Chen, 1483 阅读, 0 推荐, 收藏, 编辑
摘要:我的blog refactoring差不多完成了,现在持续更新中的blog主要有3个。 Cat in Chinese 原本Cat's Life已经转移地址,并重命名为Cat in Chinese(feed)。如果您以前订阅Cat's Life的feed,那么请更新订阅地址为新的Cat in Chinese的feed。 在这个blog,我会继续按照原来的风格写,发一些古怪的甚至完全不值得别人注意的想... 阅读全文

深入理解 ASP.NET 动态控件 (Part 3 - 页面生命周期)

2006-11-19 01:57 by Cat Chen, 10340 阅读, 5 推荐, 收藏, 编辑
摘要:前言 在上一篇文章中,承诺了这一篇开始讲解释器的,不过看来要按着一个大框架来写文章不那么容易,没仔细推研究过就写出来的内容似乎很应付式。所以我决定恢复我原来的写作习惯,我觉得哪部分的内容已经成熟了,那就把它release出来,没成熟的就继续留在我的draft里面。这次要讲的是页面生命周期,动态控件对此关注的当然是动态与静态控件在生命周期中加载的差别。 一般加载 虽然一般加载过程已经被说过很多次了,... 阅读全文

从 ASP 到 ASP.NET (Part 2 - 忘记什么)

2006-11-17 02:24 by Cat Chen, 2229 阅读, 0 推荐, 收藏, 编辑
摘要:前言上一边讲到ASP程序员迁移到ASP.NET时,应该顺应Web开发的潮流学习Web Standards,应该为了更好的理解ASP.NET而学习OOP,然而学习这些知识之后并不代表你就是一个合格的ASP.NET程序员了,因为你仍被ASP的思想所束缚,接下来我要告诉你如何解决这些束缚。比喻首先我们要看看ASP.NET是如何“确保”你被继续禁锢在ASP的思想内的。假如我把ASP... 阅读全文

在 catch 块内进行 throw 的多种方式

2006-11-12 13:49 by Cat Chen, 4271 阅读, 0 推荐, 收藏, 编辑
摘要:参考了throw; vs. throw ex; Here's the difference!我才知道在catch块内的throw;和throw ex;是有区别的,以前都不知道可以直接写throw;呢。 这两者的主要不同在于输出的stack trace上: 如果你直接使用throw;,那么stack trace就和根本不存在这个catch块的时候一样,显示错误根源是真正抛出异常的地方。 如果你使... 阅读全文

ASP.NET - 解决一个大难题的同时引入另一个更大的难题

2006-11-11 02:19 by Cat Chen, 3938 阅读, 0 推荐, 收藏, 编辑
摘要:前言 ASP.NET的优点我说过很多次了,也就是各个控件独立负责自己内部的逻辑,这是一个好事情,因为它解决了原本ASP处理逻辑耦合度高的问题。然而这是需要代价的,那就是引入ASP.NET页面生命周期,随着控件的多层嵌套,应用的复杂度增加,我们再次陷入泥潭! 问题 其实这个文章题目我两个月前就写下了,可是一直没想写完它,直到今天我在这个泥潭中泡了几个小时,于是决定先从泥潭中跳出来把文章写完,再跳进去... 阅读全文

从 ASP 到 ASP.NET (Part 1 - 学习什么)

2006-11-09 15:28 by Cat Chen, 2328 阅读, 0 推荐, 收藏, 编辑
摘要:前言首先要告诉大家,文章标题是我“恶意删改”了,原本是《从熟练的ASP程序员到熟练的ASP.NET程序员》。从ASP迁移到ASP.NET的程序员肯定不少,我就是其中一个,然而要从熟练的ASP程序员转变为熟练的ASP.NET程序员并不容易,这不仅仅要求你学习非常多的新东西,还要求你丢弃非常多的旧东西。对于没学过ASP的人来说,或许这还容易些,因为他们本来就做好了苦学的准备,也... 阅读全文

深入理解 ASP.NET 动态控件 (Part 2 - 编译过程)

2006-11-05 20:55 by Cat Chen, 8581 阅读, 4 推荐, 收藏, 编辑
摘要:前言 要深入理解ASP.NET动态控件,首先就要深入理解整个ASP.NET对页面的处理过程,由你书写好一个ASPX文件(可能还有一个code-behind文件)到你在浏览器中看到的HTML页面,这中间到底发生了什么事。这其中的第一步就是解释ASPX文件并进行编译,也就是这篇文章要讨论的内容。 由于ASP.NET编译本身就是一个大话题,所以我决定在本系列文章把这个题目再细分成几篇文章来写。开头第一篇... 阅读全文

Microsoft Ajax Beta1 - 边学边用边补充 (Part 4 - $create)

2006-11-04 01:17 by Cat Chen, 2964 阅读, 1 推荐, 收藏, 编辑
摘要:在Beta1之前,我们可以使用Xml-Script定义对象,当然也可以用JavaScript的老方式来定义对象,不过用过后者的人肯定会觉得这种方式不太方便,因为大多数Control和Behavior都需要手动调用initialize后才能正常运作。例如CTP中的Button,不执行initialize就不会绑定DomElement的click事件,它自身的click事件也就不能被正常触发。还有be... 阅读全文

Microsoft Ajax Beta1 - 边学边用边补充 (Part 3 - ITemplate)

2006-11-01 21:18 by Cat Chen, 2217 阅读, 0 推荐, 收藏, 编辑
摘要:首先,使用ITemplate的例子大家可以在Dflying那里找到一些: 使用ASP.NET Atlas实现拖放(Drag & Drop)效果(下) 使用ASP.NET Atlas ListView控件显示列表数据 这些例子当中,ITemplate都不是显式声明的。我们仅仅是在xml-script中制定了以某一个DomElement为基础生成一个ITemplate,但是ITemplate不... 阅读全文

深入理解 ASP.NET 动态控件 (Part 1 - 感性认识)

2006-10-31 13:55 by Cat Chen, 9164 阅读, 6 推荐, 收藏, 编辑
摘要:正如我在《我喜欢的教材与我讨厌的教材》中所说的,我讨厌那种标题之后直入理论部分并开始写“定理1、定理2、定理3”的做法,所以在我自己的文章也绝对不会这样写。我认为感性认识是理性认识不可缺乏的基础条件,所以在很理论性的解释ASP.NET页面生命周期之前,先通过一些大家可能都遇到过的例子给大家一个感性认识。 动态控件遇到的第一类问题就是跨页面生命周期时无法自动保存,你必须每次手动创建。举个简单的例子,... 阅读全文

扩展 Atlas 的客户端 Web Service 调用功能

2006-10-30 11:49 by Cat Chen, 2882 阅读, 0 推荐, 收藏, 编辑
摘要:Jeffrey Zhao最近在写客户端调用WebService的有关内容,那么我也来说说。Jeffrey Zhao说到了,Beta1中只有一个onComplete,onTimeout、onError、onAborted都没有了,这3个事件都整合到onComplete中,使用者需要自己在onComplete中手动判断到底属于哪个情况。另外Jeffery Zhao最近在讨论继承WebRequestEx... 阅读全文

深入理解 ViewState

2006-10-29 17:40 by Cat Chen, 9044 阅读, 6 推荐, 收藏, 编辑
摘要:上个星期写了一篇《控件 ViewState 属性的值保存去哪里了》,解释了Control.ViewState最终还是通过Control.SaveViewState和Control.LoadViewState这两个方法存取的。文章中有一句话可能会让大家感到疑惑的:“我们在OnInit之后使用this.ViewState[key]读写时该属性都为true”,其中“该属性”指StateItem.IsDi... 阅读全文

Microsoft Ajax Beta1 - 边学边用边补充 (Part 2 - DragDropList)

2006-10-27 02:21 by Cat Chen, 1597 阅读, 0 推荐, 收藏, 编辑
摘要:由于我在做一个类似Live.com的东西,所以需要类似WebPart的功能。我不清楚Atlas扩展的那个所谓的Cross Browser WebPart到底是什么,支持如何,所以不敢去尝试,从而决定用DragDropList。首先,关于如何使用DragDropList,可以参考Dflying的以下两篇文章: 使用ASP.NET Atlas实现拖放(Drag & Drop)效果(上) 使用A... 阅读全文

Microsoft Ajax Beta1 - 边学边用边补充 (Part 1 - Debug)

2006-10-27 01:31 by Cat Chen, 1459 阅读, 0 推荐, 收藏, 编辑
摘要:这Beta1的更新多就不再强调了,关键就是它对以客户端为中心的开发人员不太友善。客户端框架正在作大幅度修改,这个我不反对,但是将明显一个修改到一半的东西扔出来显然就不太好。Beta1里面的客户端框架是没问题的,不过Preview中的就衔接不上了,有些CTP原有的功能没有在Preview中保留,有些则看得出是修改中的,例如debug版的代码不太工整,enclosure和prototype书写方式混合... 阅读全文

博客重构 / Blog Refactoring

2006-10-23 23:13 by Cat Chen, 804 阅读, 0 推荐, 收藏, 编辑
摘要:之前曾经我的Blogger上说过将技术贴存档到一个专门的地方,同时开一个英语blog。现在第1步已经完成了,我在cnblogs开了一个新的blog,名称为Cat in dotNet,所有纯技术贴都已经迁移到那边去了。以后我的技术贴,在Blogger发的时候同样会在cnblogs发,不过对于技术贴的定义我需要做一个详细的说明: 主要是以讨论.NET Framework、C#、ASP.NET、Atla... 阅读全文
上一页 1 ··· 3 4 5 6 7 8 下一页