List 有三种类型的Form, 分别是:EditForm, DisplayForm, NewForm,分别对应创建 Item,编辑 Item以及察看 Item 的信息的页面。这些页面是如何生成?其运行的原理又是什么?下面来一步一步揭开谜底。
首先,以我们新建 Item 的时候的页面 NewItem.aspx为例,这个页面不是存储在本地的页面,而是在创建 list 的时候根据设置动态生成的,生成的依据定义在 List 的schema.xml文件中。
<Form Type="NewForm" Url="NewForm.aspx" SetupPath="pages\form.aspx" Template="MyCustomForm" WebPartZoneID="Main" />
接下来,分别说一下这个定义中各个属性所对应的意义:
- Type 属性定义了Form 的类型(废话)。
- Url: 属性定义了生成的 Form的地址,如果你更改了Url 的属性,则当你察看所弹出的From的地址时 ,其地址也会有相应的改动。
- SetupPath: 属性定义了生成的页面(NewForm.aspx)时所要参照的页面,这个是一个实体页面,更改这个页面的后,所生成的Form页面布局也会随之变化。
- WebPartZoneID : 当打开pages/Form.aspx 的时候,可以看到里面有一个<WebPartPages:WebPartZone runat="server" FrameType="None" ID="Main" Title="loc:Main" /> 而SharePoint在生成NewForm.aspx的时候就是将ListFormWebPart添加到相应的位置上,关于这个webPart以后的文章会详细谈到。
总结起来一句话,NewForm.aspx,EditForm.aspx,DisplayForm.aspx都是在创建list的时候动态生成的,生成原则就是在 setupPath的页面中指定的 webpartId上插入listFormWebPart。