代码改变世界

随笔分类 -  ASP.NET

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

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

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

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

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

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

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

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

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

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

ASP.NET AJAX Beta1 发布

2006-10-22 15:47 by Cat Chen, 793 阅读, 收藏, 编辑
摘要: Atlas在7月的CTP之后就几个月没有更新了,当然就意味着之后会来一个大更新,这就是ASP.NET AJAX Beta1。ASP.NET AJAX Beta1将原来的CTP拆分为两个部分:1.0核心和增值CTP,同时原来的Atlas Control Toolkit也改名为ASP.NET AJAX Control Toolkit了。上述3个下载都已经更新了,然而要把老的Atlas项目迁移到新版本则... 阅读全文

控件 ViewState 属性的值保存去哪里了

2006-10-22 15:45 by Cat Chen, 2543 阅读, 收藏, 编辑
摘要:  看过MSDN的都知道,存取ViewState有两种方法: 直接操作控件的ViewState属性,通过this.ViewState[key]就可以直接进行读写。 重写控件的LoadViewState和SaveViewState方法。在LoadViewState中系统会将此控件以ViewState保存的信息作为一个object类型参数传入,控件需要自己将信息unboxing出来。在Save... 阅读全文

ASP.NET 2.0 中的 DataSource 系列控件

2006-10-22 15:41 by Cat Chen, 1012 阅读, 收藏, 编辑
摘要: 在ASP.NET 2.0中,引入了DataSource系列控件,扔一个到页面上并且选择性的配置好SELECT/UPDATE/INSERT/DELETE对应的操作,它就能够和数据空间无缝合作自动处理查询与更新,并且提供分页、排序等支持。 有一些ASP.NET 1.x的程序员,并不喜欢使用DataSource控件,觉得还是按找1.x的写法在Page_Load里面设定数据控件的DataSource属性然... 阅读全文

Script# - 把 C# 编译为 JavaScript

2006-10-22 15:39 by Cat Chen, 2126 阅读, 收藏, 编辑
摘要: 原来有一样东西叫做Script#,是Atlas的主要开发者之一的Nikhil Kothari自己编写的一个小框架,目标就是制作一个C#编译器让C#可以直接编译为JavaScript,并且是不经过编译为IL这个步骤。 之前我就说过,以MS的做法如果要想继续宠着那群很RAD的ASP.NET程序员,并且确保他们继续think inside MS's box,那就必须做一个C#到JavaScript的编译... 阅读全文

初次使用Atlas JavaScript (Part 3 - 实现自己的应用)

2006-10-22 15:35 by Cat Chen, 947 阅读, 收藏, 编辑
摘要: 在这里,我假设你肥肥的客户端是基于MVC设计,同时Web Service的内容是以数据为中心的。 在说客户端之前,必须先说说服务器端如何设计。如果服务器端你习惯了3层设计,那就保留你以前的数据访问层和业务逻辑层设计方法,用一模一样的方法完成这两层,只不过我们不再有通过Page表现的UI,而是通过Web Service直接暴露一些业务逻辑层的调用,这就是服务器端需要完成的一切。看起来没有了Page轻... 阅读全文

初次使用Atlas JavaScript (Part 2 - Web Service扩展)

2006-10-22 15:32 by Cat Chen, 890 阅读, 收藏, 编辑
摘要: Atlas对Web Service两方面的扩展包括:1.自动生成javascript代理类的代码2.在javascript代理类调用时使用JSON表达式进行数据交换 通过看Atlas项目的web.config,你可以发现*.asmx现在关联到了一个新的handler,也就是ScriptHandlerFactory,这个handler的行为很简单,如果请求是REST方式则用新的RestHandler... 阅读全文

初次使用Atlas JavaScript (Part 1 - JavaScript扩展)

2006-10-22 15:30 by Cat Chen, 1008 阅读, 收藏, 编辑
摘要: Atlas的服务器端控件已经说了,现在说说客户端脚本。Atlas的脚本分为xml-script和javascript两部分:xml-script作为一种描述性语言主要用来做Controller,直接放在页面里面;javascript经过Atlas库扩展后可以用来写Atlas特有的客户端控件,而其内容最好放在独立的js文件中通过引用来使用。xml-script我还没有专门研究过,不是太懂其机制,所以... 阅读全文

Atlas 服务器端控件 - 易用但不灵活

2006-10-22 14:54 by Cat Chen, 609 阅读, 收藏, 编辑
摘要: 首先,我会把Atlas服务器端控件区分为两类,纯服务器端控件和客户端逻辑封装控件。前者类似WebControl派生出来的控件那样,它自身并非直接呈现(render)一个客户端元素的实例就算,而是拥有复杂的服务器端逻辑,它呈现出来的HTML由交错的规则决定着;至于后者,则类似HtmlControl派生出来的控件,它所做的基本上就是将自身呈现为一个单一的客户端元素,其服务器端属性比较直接的生成客户端元... 阅读全文

ViewState - ASP.NET 的一个特有存储容器

2006-10-22 14:52 by Cat Chen, 3567 阅读, 收藏, 编辑
摘要: 首先,我不确定是不是只有ASP.NET由ViewState,也不确认它有多特有,只是觉得这个东西对于Web开发MVC分离的进步很有帮助。 所谓的ViewState,就是用来存放关于View的State的地方。以前的存储容器包括Cookies, Session, Application, Cache, Hidden,有时候连传递变量用的QueryString也用作存储容器,但都不是专门用来存储Vie... 阅读全文