Sharepoint学习笔记—习题系列--70-573习题解析 -(Q28-Q31)
Question28
You have a Microsoft Office SharePoint Server 2007 site.
You upgrade the site to SharePoint Server 2010.
You need to create a Feature that prevents site collection administrators from upgrading the user interface of the site to SharePoint Server 2010.
Which property should you use?
A. AdministrationSiteType
B. AllowDesigner
C. AllowMasterPageEditing
D. UIVersionConfigurationEnabled
解析:
这是一道关于从Sharepoint2007升级到Sharepoint2010后的网站界面控件的题目。
选项A. AdministrationSiteType:表示SharePoint Foundation所支持的administration site的类型,可选值有 0:不是一个Administration Site. 1:是一个Tenant Administration Site。
选项B. AllowDesigner: 指定是否允许用户使用 SharePoint Designer 在 Web 应用程序中编辑网站。默认值为 True。
选项C. AllowMasterPageEditing指定是否允许网站管理员使用 SharePoint Designer 自定义母版页和布局页。默认值为 True。
选项D. UIVersionConfigurationEnabled :
先让让我们大致了解下Sharepoint升级的UI控制问题: 默认情况下,在将 Windows SharePoint Services 3.0 网站或 Office SharePoint Server 2007 网站升级到 SharePoint 2010 时,最初将通过使用 Windows SharePoint Services 3.0 的版本 3 用户界面来呈现其页面。但是,将用户界面迁移到版本 4 的时间将由网站管理员通过使用浏览器中的标准命令逐个网站进行确定。浏览器中还有一个可用命令,可供网站集所有者用来一次性迁移网站集中的所有网站。
下面我们将讨论实现详细信息,利用这些信息,SharePoint 2010 可在各版本之间来回切换网站的用户界面。每个 SharePoint 网站均由一个 SPWeb 对象表示。从 SharePoint 2010 开始,每个 SPWeb 对象都带有一个在内容数据库中跟踪的新 UIVersion 属性。UIVersion 属性是基于整数的,它可包含的有效值为 3 或 4。当某个网站的 UIVersion 属性值为 3 时,SharePoint 2010 将使用版本 3 来呈现该网站的页面。当某个网站的 UIVersion 属性值为 4 时,SharePoint 2010 将使用版本 4 来呈现该网站的页面。
还可利用 SharePoint 2010 来启用或禁用网站管理员重新配置用户界面版本的能力。可通过另一个新的 SPWeb 属性(即 UIVersionConfigurationEnabled 属性)来进行此控制。如果此属性具有的布尔值为 true,则 SharePoint 2010 将使网站管理员能够使用浏览器在版本之间来回切换。如果某个网站的 UIVersionConfigurationEnabled 属性值为 false,则 SharePoint 2010 不会为网站管理员提供用于在各个用户界面版本之间切换的任何控制。
当您在 SharePoint 2010 中创建新网站时,无需使用直观升级功能。因此,创建的新网站的 UIVersion 属性值为 4,UIVersionConfigurationEnabled 属性值为 false。这意味着,将使用版本 4 来运行新网站的用户界面,并且网站管理员无法将网站的用户界面切回到版本 3。
在从 Windows SharePoint Services 3.0 和 Office SharePoint Server 2007 升级现有网站时,情况则有所不同。当您升级某个网站时,SharePoint 2010 包含以下默认行为:最初分配的 UIVersion 属性值为 3,UIVersionConfigurationEnabled 属性值为 true。这意味着,最初会在版本 3 下运行已升级网站的用户界面。已升级网站还使网站管理员能够重新配置网站的用户界面以开始使用版本 4。但是,当网站管理员决定重新配置在版本 4 下运行的网站时,SharePoint 2010 会将 UIVersionConfigurationEnabled 属性更新为 false,这将使网站管理员无法切回到版本 3。
所以本题目正确选项应该是D
参考 :
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.administrationsitetype(v=office.14).aspx
http://technet.microsoft.com/zh-cn/library/ff607703.aspx
http://msdn.microsoft.com/en-au/library/gg454789(v=office.14).aspx
Question 29
You have a custom Web Part.
You need to create a custom user interface for modifying the Web Part properties.
What should you do?
A. Modify the [ToolBox] attribute of the custom Web Part.
B. Create a new tool part for the custom Web Part.
C. Create a new Web Part. Implement the IControlBuilderAccessor interface.
D. Create a new Master Page. Implement the IControlBuilderAccessor interface.
解析:
本题想要实现创建一个用户界面来设置Custom Web Part的各个属性,是关于Web Part编程的题目。微软支持开发者通过使用Custom Tool Part创建操作WebPart相关属性的用户界面。你可以轻易找到相关资料来指导你具体如何实现。
选项A. Modify the [ToolBox] attribute of the custom Web Part. 这是修改已有的默认的Webpart控件属性(Default Properties),对新添加的属性则无能为力,对创建或修改管理WebPart属性的界面(例如:在此界面上添加一个Dropdown List以辅助定义相关属性)也毫无关系。
选项C. Create a new Web Part. Implement the IControlBuilderAccessor interface. IControlBuilderAccessor 接口定义的功能是:使控件序列化程序可以到达控件的生成器。IControlBuilderAccessor 接口定义了控件必须实现的属性,以允许控件序列化程序可以访问控件的生成器。从此接口的描述来看,仅实现此接口是不足以完成属性修改界面与Webpart控件完整交互的。虽然Sharepoint的Tool Part的实现用到了此接口,但它并不是本题需要的全部。
选项D. Create a new Master Page. Implement the IControlBuilderAccessor interface.即使对IControlBuilderAccessor 接口不甚了解,看到了Master page的字样也可以判断它与Webpart的属性修改界面定义没什么关系了。
所以本题目正确选项应该是B
参考:
http://msdn.microsoft.com/zh-cn/library/vstudio/ee231548(v=vs.100).aspx
http://msdn.microsoft.com/zh-cn/library/dd584178(v=office.11).aspx
http://msdn.microsoft.com/zh-cn/library/fp179922.aspx
http://msdn.microsoft.com/EN-US/library/system.web.ui.icontrolbuilderaccessor
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.toolpart_members(v=office.14).aspx
Question 30
You need to create a Web control that displays HTML content during the last stage of the page processing lifecycle.
Which method should you override in the Web control?
A. LoadControlState
B. Render
C. SaveViewState
D. SetDesignModeState
解析:
本题想要实现在页面处理生命周期的最后阶段呈现一段HTML内容。
所以,实质是要对Page页面的生命周期进行掌握。
ASP.NET 页运行时,此页将经历一个生命周期,在生命周期中将执行一系列处理步骤。这些步骤包括初始化、实例化控件、还原和维护状态、运行事件处理程序代码以及进行呈现。了解页生命周期非常重要,因为这样做您就能在生命周期的合适阶段编写代码,以达到预期效果。
选项A. LoadControlState :此方法是内部保留方法,不支持在你的用户代码中直接调用。所以直接排除。
选项B. Render 呈现,处于阶段之前的一个阶段,在呈现之前,会针对该页和所有控件保存视图状态。在呈现阶段中,页会针对每个控件调用 Render 方法,它会提供一个文本编写器,用于将控件的输出写入页的 Response 属性的 OutputStream 对象中。从此描述可以推断,这正是本题需要使用的方法。
选项C. SaveViewState. 只是用于保存Control的ViewState状态。与呈现HTML内容毫无关系。
选项D. SetDesignModeState 此方法保存设计时数据的控件。实践时要求用户必须重写此方法保存您的控件所需的设计时数据。与呈现HTML内容毫无关系。
所以本题目正确选项应该是B
参考:
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.webpartpages.spwebpartmanager.loadcontrolstate(v=office.14).aspx
http://msdn.microsoft.com/zh-cn/library/ms178472.aspx
Question 31
You need to create a Web control that displays an ASCX control.
Which event should you use to render the Web control?
A. CreateChildControls
B. LoadControlState
C. SaveViewState
D. SetDesignModeState
解析:
本题是关于Visual Web Part的编程问题。
先来看看Webpart的生命周期
1. 当一个包含WebPart的WSS站点页面被响应请求或者是它被提交到Server端的时候,这时WebPart生存周期开始了
2. OnInit 初始化,加载相关配置文件 (如WebPart任务面板上的属性,样式等配置信息) .
3. LoadViewState 返回先前最后一次被处理的状态 (如webpart是展现,隐藏还是关闭)
4. CreateChildControls 创建WebPart UI ,通过Controls.Add()方法装载Web 控件 (当Webpart是第一次展现的时候CreateChildControls方法发生在OnLoad方法之前,而经过一次postback之后,它发生在OnLoad方法之后)
5. OnLoad 从数据库或者其他系统重新获取要展现的数据 (如获取数据库连接)
6. User-Generated Events 响应用户生成事件 (如Button Click)
7. RendenContents 生成 html output,实现最终的UI展现 (由HTMLTextWriter class 来实现)
8. SaveViewState 保存控件状态 (ViewState 被序列化之后保存在一个hidden field 里)
9. Dispose 从内存中移除对象,释放临界资源 (如释放数据库连接)
10. OnUnLoad 最终完成内存清除工作
再来看看相关事件
OnInit 处理控件的初始化
OnLoad 处理控件的装载
CreateChildControls 创建子控件
EnsureChildControls 确保CreateChildControls方法被调用,使用该方法来确保在访问控件的数据之前控件已经存在。
OnPreRender 处理在呈现控件之前必须完成的任务,例如数据装载。异步页面任务应该从该方法中被启动。
Page.PreRenderComplete 在所有的控件都完成其OnPreRender 方法并且页面已经完成了异步任务的执行之后,将会触发该事件。
Render 呈现整个控件,包括外部标签。
RenderContents 仅仅呈现控件在外部标签和样式属性内的内容。
选项A. CreateChildControls: 创建子控件,正是完成本题要求的选项。
选项B. LoadControlState: 此方法是内部保留方法,不支持在你的用户代码中直接调用。所以直接排除。
选项C. SaveViewState. 只是用于保存Control的ViewState状态。与呈现ASCX control内容毫无关系。
选项D. SetDesignModeState 此方法保存设计时数据的控件。实践时要求用户必须
重写此方法保存您的控件所需的设计时数据。与呈现ASCX control内容毫无关系。
所以本题目正确选项应该是B