陆陆续续地把这本<<A First Look at ASP.NET v.2.0>>读完了(沉思的辣椒处有电子书下载),除了那些大家提到的新功能,象什么新数据控件/MasterPage/Portal Framework/Personalization/Themes什么的外,ASP.NET 2.0还对Page Framework作了不少改进,譬如
1。网站上经常有人问怎么提交到另外一个webform去,因为如果是用server form的话,在ASP.NET 1/1.1里只能提交到当前页。常见的建议是,先把数据存起来,然后用Response.Redirect或用Server.Transfer(如果是同一网络应用的话),或是别用server form或用Javascript脚本在提交时改动form action。这些答案都不是很令人满意,ASP.NET 2.0提供了一个叫cross-page posting的机制。如果是同一应用的话,在第二页面的后端编码里还能访问第一页面的对象模型。
2。ASP.NET1/1.1里的验证模式是要么全验证要么全不验证,除非你回到老路自己写客户端验证编码或hack WebUIValidation.js。2.0提供了一个按组验证的方法。
3。ASP.NET 2.0还提供了Wizard类型的页面模式编程。
4。ASP.NET 2.0还提供了简单明了的URL影射机制。
5。还有一些客户端脚本方面的改进,譬如你可以在后端调用控件的SetFocus方法(当然,最终还是在客户端以脚本的方式来实现的),以及一些注册脚本编码方面的改进。
6。 ASP.NET 2.0还改变了页面以及控件的生命周期,在其中新加了几个事件。
其中一个改变是,新增了一个RaiseCallbackEvent步骤,允许页面在不postback的情形下调用服务器端的编码。经常看见有网友在网上问怎么在不postback的情形下更新页面,这个新改进应该能很好地满足这个要求而且其调用过程比较简单。
记得类似的方法一开始是用隐藏桢来实现的,后来出现了remote scripting(滑稽的是,它是用Java applet实现的),再后来在IE5里的MSXML组件里提供了一个XMLHTTP对象,以及后来的download行为,再到后来的比较时髦的webservice 行为。
2.0里的Callback在IE里实际上还是用XMLHTTP对象来实现的,但这个实现是可以在多个浏览器上用的,譬如在Netscape里, 所用的对象是XMLHttpRequest。