chapter 3
在新建solution的时候,可以选择建立的位置,默认是一个websites目录下,可以通过操作选择在localhost的iis,ftp或者remote的web
site上。
在新增一个item的时候,可以选择是否将presentation code和logic code放在一个文件中。
多了MasterPage和PreviousPage两种page,后面讲到
增加了不少的controls,例如Navigation用的,以及为了Personlize的(webpart,webzone,webpartmanager)
多了一些事件,现在page的执行顺序为:PreInit, Init, InitComplete, PreLoad, Load, LoadComplete, PreRender,
PreRenderComplete
PreviousPage用于Cross-Page Posting,而Cross-page Posting,就是post动作,并不是发送回本页,而是另外的一个url页面,例如下面
的代码
<asp:Button ID="Button1" Runat="server" Text="Submit page to itself"
OnClick="Button1_Click" />
<asp:Button ID="Button2" Runat="server" Text="Submit page to Page2.aspx"
PostBackUrl="Page2.aspx" />
注意到了么,Button2没有OnClick,而是用PostBackUrl来定义了Post动作发送到的页面,同时,在Page2.aspx中定义PreviousPage,以便于
Page2的behind code进行引用从而调用Post动作源Page1.aspx的controls。访问Page1.aspx上control有两种方法,一个是Page1.aspx公布
property,另一个是PreviousPage.FindControl(ControlID),其中ControlID是一个string。忘记说一点,PreviousPage的定义是利用
Directive进行定义的,例如在Page2.aspx中<%@ PreviousPageType VirtualPath="~/Default3.aspx" %>。同时,利用新增加的属性
IsCrossPagePostBack,就可以对Cross-Post进行拦截处理。
关于文件夹。在asp.net 2.0中,通过使用预定义好的文件夹,IDE?会为程序员自动编译好程序。MMD,不明白,也不知道翻译的对不对。
\code文件夹,存储类,.wsdl文件以及类型化dataset,如果把一个.cs文件放入code文件夹中,vs自动编译它,放入一个.wsdl文件,vs自
动创建web service的代理类,放入一个.xsd文件,vs自动创建类型化dataset,只要这些自动创建完成,所有同一个solution的page就可以立
即调用这些item。
实现code文件夹的步骤:创建一个文件夹,名称叫做code,vs会特殊处理它,至少图标都不一样。如果是多开发语言的情况,可以分别建
立子文件夹,并且在web.config文件中增加说明,例子如下:
<system.web>
<compilation>
<codeSubDirectories>
<add directoryName="VB"></add>
<add directoryName="CS"></add>
</codeSubDirectories>
</compilation>
</system.web>
\Themes文件夹,存放.css文件以及Server Control用到的image
\Resources文件夹,在vs 2003中,如果要做全球化和本地化,需要resgen.exe工具,现在vs2005中,不用了,直接把resx文件放在
Resources文件夹中,就可以了
Compilation,编译,在page被第一次浏览的时候,request被发送给asp.net分析器,asp.net分析器创建类文件,然后class文件被编译进
DLL,写到Web Server的硬盘上,然后Response这个class文件;在第二次请求这个page的时候,request只是简单的实例化一下已经创建的dll
,并把它返回给request就ok了。
但也正是这种机制,使得如果有了一点点的改动,都需要重新编译程序,很烦的说,在vs2005中,有了改进,这种编译被称为in-place
precompilation,具体的做法就是在IE中,把page的名字替换为precompile.axd,例如http://localhost:8080/mywebsite/aaa.aspx在IE的地
址栏更该为http://localhost:8080/mywebsite/precompile.axd
数据操作:在vs2003中,使用的是很复杂的DataAdapter、DataSet,最后进行DataSource设置,很麻烦,现在vs2005简化了这些,给了几
个DataSource,例如连接SQL的SQLDataSource,连接Access的AccessDataSource等等。
GridView,显示数据,有DataSourceID进行DataSource连接,AllowPaging允许分页,AllowSorting允许排序,
AutoGenerateEditingButton允许编辑,AutoGenerateDeleteButton允许删除,AutoGenerateSelectButton允许高亮选择条目