WSS3SDK之:Feature元素的类型
元素的类型会由于其功能的不同而有所差异。下表描述了Feature中的元素类型及可能用在哪些范围中。
元素 | 范围 |
描述 |
---|---|---|
Content Type |
Site |
包含了一个可重用于多个列表定义中的架构定义。 |
Content Type Binding |
Site |
内容类型绑定允许您在列表定义的onet.xml架构中提供一个内容类型 。在onet.xml架构中的列表定义不可以直接修改。 |
Control |
Farm, WebApplication, Site, Web |
一个委托控件包含了网页中已知控件的一个注册。通过它您可以用别的控件来替换已有的控件(比如WSS的搜索控件)。 |
Custom Action |
Farm, WebApplication, Site, Web |
您可以定义下列自定义操作:
|
Custom Action Group |
Farm, WebApplication, Site, Web |
定义一个自定义操作的组。 |
Document Converter |
WebApplication |
包含一个文档转换器的定义。文档转换器是一个自定义的可执行文件用来将文档从一种类型转换成另一种类型。 |
Feature/Site Template Association |
Farm, WebApplication, Site |
将一个Feature绑定到一个站点定义或模板上。这样当创建该类型的网站时将自动提供该Feature。 |
Field |
Site |
包含一个可用于多个列表中的字段定义。 |
Hide Custom Action |
Farm, WebApplication, Site, Web |
隐藏一个由其他自定义操作添加的自定义的操作。 |
List Instance |
Site, Web |
在SharePoint网站中生成特定列表的数据。 |
List Template |
Site, Web |
包含一个列表定义或模板,其中定义了可用于SharePoint网站的一个列表。 |
Module |
Site, Web |
包含了用于网站中的一堆文件。 |
Receiver |
Web |
包含了一个列表项事件接受器的注册。 |
Workflow |
Site |
包含了列表中工作流的定义。 |
Farm: 场范围
WebApplication: 应用程序范围
Site: 网站集范围
Web: 网站范围
列表模板
列表模板定义了如何生成特定类型的列表,以及与之相关的内容类型。包括下列文件:-
Feature.xml 文件用于标识该列表。
- 元素文件定义了列表模板。
- Schema.xml文件包含了列表定义。
列表架构定义
列表架构定义包含了一个列表的基本定义,包括字段的定义,视图,窗体,用于列表的工具栏,以及与该列表架构绑定的内容类型等。
内 容类型的定义会继承到特定网站下所有的子网站;比如,在http://Top_Site/sites/Site/Subsite中的一个列表可以引用一个 定义于上层父网站中的内容类型。列表既可以只绑定单一的内容类型,也可以绑定多个内容类型,进而创建包含多种内容的列表。不论怎么绑定,用于列表架构中的 内容类型必须事先定义好。由于窗体是和内容类型相关的,所以他们也是在内容类型定义中声明的。
可能的范围:
-
Farm: No
-
Web Application: No
-
Site Collection: Yes
-
Web Site: Yes
激活
当一个包含列表定义的Feature被激活,该列表架构在其所处的网站或网站集中变为可用。
列表实例
在WSS 2.0中,您只能为指定的列表类型指定一套默认数据。比如,在通知列表的定义中,数据为"欢迎使用SharePoint!",不可能用不同的数据生成两个不同的通知列表。在WSS 3.0中,列表实例可以单独生成。许多应用程序会依赖网站层存储的数据来支持其行为。一个列表实例是一个预先定义好的包含已知的标识的列表。一个列表实例可以对最终用户显示或隐藏。
注意:
如果一个列表实例是可见的,最终用户有可能会误删除该列表。如果关闭该Feature,即使在其中的某元素(一个列表实例)不再可用的情况下,关闭操作仍将成功。
- Farm: No
-
Web Application: No
-
Site Collection: Yes
-
Web Site: Yes
一个网站集范围上的列表实例会生成在顶级网站中。这类列表实例往往用于存储在整个网站集范围内使用的资源,如:母板页。
模块(文件集)
模块是一个文件实例的集合,这些文件将生成到某个网站中。模块通常用于在网站中部署Web部件页。注意:
WSS 3.0最大支持通过Feature部署1000个文件。不论是一个文件中有1000个模块,还是1000个文件每个有1个模块。
-
Farm: No
-
Web Application: No
-
Site Collection: Yes
-
Web Site: Yes
激活文件实例
当模块在网站上激活,模板中包含的文件将生成到网站上。
关闭文件实例
当一个包含模块的Feature被关闭,模块中包含的文件不会从网站中删除。
内容类型
内容类型提供了一种方式来管理列表项的元数据和行为,使得我们可以在相同的库或列表中存储不同类型的内容。内容类型架构
内容类型架构是WSS列表项的基础定义。内容类型提供了一个结构化的方式来定义列表项的行为,如必填,保留,和工作流。内容类型允许SharePoint列表实现异构性,在单个列表中存储不同类型的列表项。
当新版本的内容类型架构被部署时,列表项的架构会被安置到他们对应的库中。可能的范围:
-
Farm: No
-
Web Application: No
-
Site Collection: Yes
-
Web Site: No
激活内容类型
当您启用了一个包含内容类型的Feature时,该内容类型会被放到相应范围内的可用内容类型清单中。
关闭内容类型
当您关闭一个包含内容类型的Feature时,内容类型会被WSS从可用内容类型清单中移除。这等效于在相应范围上选择一个内容类型然后点删除。这样一来,您就可以阻止这些内容类型新实例的创建。基于该内容类型的已有数据仍旧可用。
当 您安装WSS时,会在Template\Features目录下创建一个ctype文件夹。该文件夹包含了一个feature.xml文件和一个 ctypeswss.xml文件。该feature.xml文件引用了ctypeswss.xml文件,其中指定了一些我们平时会用到的内容类型。字段
一个共享字段的例子是“规范状态, 它有一些标准的选择项,如“ One Page” , “Draft” , “Reviewed”和“Inspected” 。每个工作组可以在部署时在网站中重复使用该自定义属性定义。
共享字段是一个生成时的概念,往往在内容类型中对其进行引用。例如,如果您要生成一个网站集,其中包含两个不同的内容类型,他们使用了相同的共享字段,来提供对于那些内容类型的实例完全相同的字段。对于这些相同的字段的每个实例,他们会使用一致的标识。
-
Farm: No
-
Web Application: No
-
Site Collection: Yes
-
Web Site: No
工作流类型
一个工作流是一个功能包,用于为文档或列表项指定一个处理流程。作为一个独立的实体,一个工作流可以关联到任意数量的容器(列表)或内容类型上。
一个工作流必须实现下列组件:
- 工作流计划
-
Feature.xml 文件
- 工作流元数据
-
工作流特定的视图
-
工作流特定的栏
-
工作流特定的窗体(参数化模板)
- 实现工作流的DLL组件(基于Windows的流程引擎)
可能的范围:
-
Farm: No
-
Web Application: No
-
Site Collection: Yes
-
Web Site: No
关闭工作流
当一个工作流被关闭,将不能初始化新的工作流。已有的工作流实例允许继续跑完。
事件
WSS 3.0提供了一整套可扩展的事件,您可以将其整合到库,列表,网站和用户操作中。有两种类型的WSS事件:- 在动作发生前触发的事件,同步处理,允许我们在列表被修改前进行自定义验证和数据处理。
- 在动作发生后触发的事件,异步处理。
网站列表项事件绑定
事件除了可以绑定到某个内容类型上之外,您还可以将事件处理程序注册到网站级别,来对列表项事件进行响应。
可能的范围:-
Farm: No
-
Web Application: No
-
Site Collection: No
-
Web Site: Yes
站点事件激活
当站点事件被激活后,将会在特定网站上注册事件,然后与特定类型的列表实例相关联。
注意:
尽管该元素类型仅支持网站范围的Feature,但是却可以被关联到一个网站集范围的内容类型上。自定义操作
一个自定义操作代表了一个链接,工具栏按钮,菜单项,或可以添加到工具栏或菜单中用户可以看见的任何控件。自定义动作可以绑定到列表类型,内容类型,文件类型或某个程序标识(ProgID)上。
当 您用CustomAction元素来往工具栏中添加一个控件时,标准的ASP.NET控件和用户控件都可以用,比如文本框或选项按钮。然而,如果您添加了 一个控件到工具栏的下拉菜单(例如列表视图工具栏的操作菜单),该控件只能实例化成下拉菜单中的一个菜单项。换言之,您不能添加一个WebPart或随意 什么控件到一个下拉菜单中。可能的范围:
-
Farm: Yes
-
Web Application: Yes
-
Site Collection: Yes
-
Web Site: Yes
激活自定义工具栏,菜单项和链接
当一个自定义操作被激活,则与之相关联的自定义工具栏,菜单项和链接会在对应位置显示出来供用户操作。
关闭自定义工具栏,菜单项和链接
当自定义操作被关闭,则与之相关联的自定义工具栏,菜单项和链接将变成不可用,不会显示在对应位置上。
示例
当您安装好WSS 后,在Template\Features目录下会出来两个文件夹,ContentTypeSettings和SiteSettings。每个文件夹都包 含了一个Feature.xml文件,并引用了一个ContentTypeSettings.xml和SiteSettings.xml文件。 ContentTypeSettings文件指定了在编辑内容类型页面ManageContentType.aspx中的若干操 作,SiteSettings文件指定了显示在Settings.aspx中的管理操作。
委托控件(控件模板化与生效)
WSS 3.0实现了一种简单的机制来为特定功能声明候选控件,并提供一种机制来选择单一的功能提供者。通过Feature您可以标识控件和控件模板来供特定功能选择。所有标识用于特定功能的控件都是通过控件方式提供的。您可以通过Feature元素为这些功能注册控件。您可以指定控件被使用的顺序,一个序列号,和一个URL指向某控件模板或DLL组件。如下代码所示:
XML<Control Id="SmallSearchInputBox" Sequence="100"
Url="/templates/mysearchcontrol.ascx"/>
</Element>
<Element>
<Control Id="SmallSearchInputBox" Sequence="50"
ControlClass="MySearchControl" ControlAssembly="

</Element>
DelegateControl是通过如下信息内嵌到WSS页面中的:
XML
举个例子,下面的委托控件含有一个自定义的参数:
XML
委托控件不是一个设计好的固定的控件,它对于其最终的实现形式是一无所知的。该控件最适合用于某选取控件的实例的设计时HTML渲染。设计者通过委
托控件可以为“硬编码”控件提供一个选则余地,在将来可以借助Feature体系用某控件替换SharePoint:DelegateControl。开
发者在后续工作中就可以具体再定制该控件了。
-
Farm: Yes
-
Web Application: Yes
-
Site Collection: Yes
-
Web Site: Yes
Feature与网站模板的关联
“Feature/站点模板关联”允许您将一个新的Feature及其功能与已有的站点定义或站点模板 相关联。这样,当创建网站时会自动包含该Feature。在“Feature/站点模板关联”中包括了两个Feature:包含实际要添加到已知站点模板 的功能的Feature,和“Feature/站点模板关联”Feature自己。该元素的Feature通常用在场或Web应用程序层次,专门用来将前 一个Feature绑定到模板上。可能的范围:
-
Farm: Yes
-
Web Application: Yes
-
Site Collection: Yes
-
Web Site: No
示例
下面的例子展示了“Feature/站点模板关联”Feature的Feature.xml文件格式:
XML
<Feature Id="82E2EA42-39E2-4B27-8631-ED54C1CFC491"
Title="Feature_Title"
Description="Feature_Description"
Version="12.0.0.0"
Scope="Farm"
xmlns="http://schemas.microsoft.com/sharepoint/"
DefaultResourceFile="_Res">
<ElementManifests>
<ElementManifest Location="Feature_Elements.xml"/>
</ElementManifests>
</Feature>
上面的Feature.xml文件引用的元素文件大致是下面的样子:
XML
<FeatureSiteTemplateAssociation Id="29D85C25-170C-4df9-A641-12DB0B9D4130" TemplateName="STS#0" />
<FeatureSiteTemplateAssociation Id="29D85C25-170C-4df9-A641-12DB0B9D4130" TemplateName="STS#1" />
<FeatureSiteTemplateAssociation Id="29D85C25-170C-4df9-A641-12DB0B9D4130" TemplateName="BDR#0" />
<FeatureSiteTemplateAssociation Id="29D85C25-170C-4df9-A641-12DB0B9D4130" TemplateName="SPS#0" />
</Elements>
您也可以将一个Feature关联到所有网站定义,这样在所有的网站创建好后都会包含该Feature。如果需要将 Feature关联到全局,只要将TemplateName属性设为GLOBAL#0就可以了。无论何时您创建一个网站,全局站点定义都会被应用,这样您 的Feature也就被应用了。
按范围分类元素
下表根据范围列出了可以运用的元素类型。
范围 |
元素 |
---|---|
Web (网站) |
Control Custom Action Custom Action Group Hide Custom Action List Instance List Template Module Receiver |
Site (网站集) |
Content Type Content Type Binding Control Custom Action Custom Action Group Feature/Site Template Association Field Hide Custom Action List Instance Module Workflow |
WebApplication (Web应用程序) |
Control Custom Action Custom Action Group Document Converter Feature/Site Template Association Hide Custom Action |
Farm (场) |
Control Custom Action Custom Action Group Feature/Site Template Association Hide Custom Action |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!