Question 111
You create a custom page layout that contains the following code segment. (Line numbers are included for reference only.)
01 Please enter a number:
02 <SharePointWebControls:InputFormTextBox ID="NumberTextBox" runat="server"/>
03
You need to prevent the page from being saved if NumberTextBox is empty.
Which code segment should you add at line 03?
A. <script type="javascript">if(document.getElementById('NumberTextBox').value = '') return false;</script>
B. <script type="javascript">if(document.getElementById('NumberTextBox').value = '') return true;</script>
C. <SharePointWebControls:InputFormCompareValidator ID="NumberValidator" runat="server" ControlToValidate="NumberTextBox"/>
D. <SharePointWebControls:InputFormRequiredFieldValidator ID="NumberValidator" runat="server" ControlToValidate="NumberTextBox"/>

解析:
  本题题意是指在一个页面上有一个输入文本框控件,要求你实现此输入文本框必须有值才能提交页面。
  根据题意自然想到校验控件,于是马上定位到选项B.C。如果对校验控件比较熟悉的马上进一步定位到选项D。因为选项C一般用于两个输入框,并校验其输入值的大小逻辑的。而选项C则是要求输入框必须录入值的。
  事实上,Sharepoint还提供了如下校验控件:
.InputFormRangeValidator: 判断录入值是否在一定的合理范围内。
.InputFormRegularExpressionValidator :通过正则表达式来校验录入的数据。
.InputFormCheckBoxListValidator :类似于InputFormRequiredFieldValidator,只不过针对的是CheckBox,要求必须作出选择。
.InputFormCustomValidator: 由用户自定义校验的逻辑,当然实现更灵活,更强大。
   至于选项A.B,都是试图通过常规的ASP.NET的方式去获取NumberTextBox控件,很显然会失败,因为在Sharepoint中,这些控件的ID绝不是你设计时的那样,Sharepoint加入了它自己的管理规范,你可以自己在呈现的页面上使用IE Developer Tool 来查看Sharepoint的控件命名就清楚了。
所以本题目正确选项应该是D
参考:
 http://karinebosch.wordpress.com/sharepoint-controls/sharepoint-validation-controls/

Question 112
You create a custom page layout that contains code-behind.
You need to identify whether the page is in Edit mode or in Display mode.
What should you use?
A. SPContext.Current.FormContext
B. SPContext.Current.ListItem.Properties
C. this.Form
D. this.Web.ASPXPageIndexMode

解析:
 本题是判断一个用户定义页面是呈编辑状态还是显示状态。
 分别分析备选项:
 选项A涉及到FormContext类
FormContext类有一个很好的方法:
1. SetFormMode 此方法用来设置当前的SPControlMode值如下
Invalid 控件处于无效状态
Display 控件处于显示状态
Edit     控件处于编辑状态
New     控件处于创建状态

FormContext 类有两个有用的属性
1. FieldControlCollection – 获取Field控件集
2. FormMode – 获取当前的SPControlMode值(可用来判断是显示模式还是编辑模式)
  所以选项A应该是本题答案。
再来看其它选项:
选项B. 是获取当前ListItem对象的属性集,与显示模式无关。
选项C. this.Form 获取当前Form
选项D. this.Web.ASPXPageIndexMode 获取或设置被WebSite使用的.aspx页的页索引状态值[是枚举值],它有3个值:
  1.Always:  如果值为1,则表示页面索引(page indexing)功能可以使用。
2.Automatic  如果值为0,则表示页面索引(page indexing)功能可以自动启用。
3.Never 如果值为2,则表示页面索引(page indexing)功能不能启用。
 
所以本题目正确选项应该是A
参考:
SPFormContext.FormMode Property
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spformcontext_properties.aspx
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.webcontrols.spcontrolmode.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontext_members.aspx
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.webaspxpageindexmode.aspx

Question 113
You create a custom field type and a CustomFieldControl.ascx user control.
You need to write the code-behind of the CustomFieldControl.acsx user control.
Which object should you override?
A. BaseFieldControl
B. SPFieldCalculated
C. SPFieldText
D. WebPart

解析:
  此题涉及到SharePoint 列表数据模型中的自定义字段类型的创建。
在 SharePoint Foundation 中存储业务信息时,您可能会遇到以下情况:重要的业务数据与 SharePoint Foundation 中包含的字段类型不相符,或者您希望进一步自定义这些常规字段类型。SharePoint Foundation 使您能够创建自定义字段类型。这些自定义字段可以包括自定义数据有效性和自定义字段呈现。当用户设置基于您的自定义字段类型的属性变量和新建列时,您还可以自定义处理和呈现该自定义字段类型的可变属性的方式。
下面我们大致了解一下如何创建自定义字段类型(即步骤):
1. 创建字段类型定义
字段类型定义是一个 XML 文件,其中包含 Microsoft SharePoint Foundation 对字段类型进行注册和正确呈现字段所需的信息。最重要的是,其中包含有关含有已编译字段类型的程序集的信息。
2. 创建字段类
字段类是一种类,其实例可以表示基于您的自定义字段类型的特殊字段。此类必须继承自 SPField 或 SharePoint Foundation 中派生自它的某一个类。
此类还可以包含字段类型的自定义数据验证。
3.(可选)创建自定义 XSLT 样式表
使用 XSLT 样式表是 SharePoint Foundation 在列表视图中呈现字段的标准方式。默认情况下,SharePoint Foundation 的内置样式表只以纯文本形式呈现字段的值。如果要在列表视图中显示各种不同的呈现形式,则系统呈现自定义字段所需的一个基本要素是自定义 XSLT 样式表。您可以根据 fldtypes_*.xsl 模式对其命名,并将其部署到 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\LAYOUTS\XSL。自定义样式表优先于默认样式表。
4. 创建呈现控件类【即本题所实施的步骤】
可以将呈现控件类与呈现模板一起使用,以便在“新建”模式、“编辑”模式或“显示”模式中呈现您的字段。此类必须从 BaseFieldControl 或从它派生的 SharePoint Foundation 中的类之一继承。可将此类编译为与字段类相同的程序集。
验证逻辑由字段呈现控件的 Validate、IsValid 和 ErrorMessage 成员以及基础字段类型的 GetValidatedString 方法实现。(CreateChildControls 可能会调用 Validate。)
5. 创建一个或多个呈现模板
每个字段呈现控件至少具有一个与之关联的字段呈现模板,以便在“新建”、“编辑”或“显示”模式中呈现字段。通过让字段呈现控件在它的一个属性中包含对字段呈现模板 ID 的引用,即可实现这种关联。在呈现时,SharePoint Foundation 通过搜索 %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\TEMPLATE\CONTROLTEMPLATES 中 .ascx 文件中声明的所有呈现模板的 ID 来查找所需模板(Web 应用程序启动时将加载所有这些模板)。 
6.(可选)创建字段值类型
如果要创建一个自定义字段类,该字段类要求字段数据采用特殊数据结构,则可以创建一个值类(或结构)来包含您的字段数据。
7.(可选)创建编辑控件
所有字段类型都需具有名称、数据类型、说明和其他常见属性;不过许多字段类型还具有仅与该特定类型的字段关联的属性。当用户创建基于字段类型的新列时,他们在用户界面 (UI) 中设置这些变量属性。通常,字段类型定义中的元素可确定如何呈现这些属性设置控件。但有时需要特殊编辑控件。此类控件在用户控件中进行定义;用户控件即 .ascx 文件,它通常有一个包含其逻辑的代码隐藏文件。如果需要执行自定义功能(例如,复杂的计算逻辑、从数据源中查找值或对用户在配置新列时可能选择的值进行自定义数据验证),则建议创建特殊编辑控件。
8. 部署元素
 由上面第4步的标注我们就知道了选项A是本题的正解。
 再来看其它选项:
选项B. SPFieldCalculated 代表计算字段。它不是派生自BaseFieldControl类,所以根据上面的步骤4中的描述,应该排除。
选项C. SPFieldText 代表单行文本字段,它也不是派生自BaseFieldControl类,所以根据上面的步骤4中的描述,应该排除。
选项D. WebPart 代表Web控件。
所以本题目正确选项应该是A
参考:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.basefieldcontrol.aspx
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.spfieldcalculated.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfieldtext.aspx

Question 114
You create a custom page layout that has a field control named Field1.
You need to ensure that Field1 is only visible when users modify the contents of the page.
Which parent control should you use for Field1?
A. EditModePanel
 B. PageLayoutValidator
C. PublishingContext
D. ValidatorAggregator

解析:
本题涉及到控制页面布局(Page Layout)中的字段控件(Field Control)的显示,本题只想让此字段控件在我们编辑页面布局时显示出来。
  分别分析各选项:
选项A. EditModePanel:当一个页面在浏览器中呈现时,它有两种显示模式:编辑(Edit)模式或显示(Display)模式。阅览者看到的只能是显示模式,而页面的作者或修改者则还可以看到编辑模式。你可以使用EditModePanel 控件来结合页面的当前显示模式以控制其它控件的显示与否。它就像一个容器,你可以把字段控件放在里面,通过控制此容器的相关属性来控制其内容的呈现。网上最常用的做法是当页面处于Display模式时隐藏某些控件,而处于Edit模式时则呈现某些控件,但实际上它的用法不只这种,你可以查问相关文档深入研究。
选项B. PageLayoutValidator:用来检验一个页面布局是否在Master Page Gallery中存在。
选项C. PublishingContext:用于在Publishing页面上创建一个录入字段,此控件用在页面发布的编辑模式。
选项D. ValidatorAggregator:代表一组针对某控件的校验器(Validator) 。
所以本题目正确选项应该是A

参考:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.publishing.webcontrols.editmodepanel.aspx
http://msdn.microsoft.com/zh-cn/library/ms517332.aspx
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.publishing.webcontrols.pagelayoutvalidator(v=office.14).aspx

Sharepoint学习笔记—习题系列--70-573习题解析 -(Q111-Q114)的更多相关文章

  1. Sharepoint学习笔记—ECM系列—文档列表的Metedata Navigation与Key Filter功能的实现

    如果一个文档列表中存放了成百上千的文档,想要快速的找到你想要的还真不是件容易的事,Sharepoint提供了Metedata Navigation与Key Filter功能可以帮助我们快速的过滤和定位 ...

  2. Sharepoint学习笔记—ECM系列--文档集(Document Set)的实现

    文档集是 SharePoint Server 2010 中的一项新功能,它使组织能够管理单个可交付文档或工作产品(可包含多个文档或文件).文档集是特殊类型的文件夹,它合并了唯一的文档集属性以及文件夹和 ...

  3. Sharepoint学习笔记—习题系列--70-576习题解析 --索引目录

        Sharepoint学习笔记—习题系列--70-576习题解析  为便于查阅,这里整理并列出了70-576习题解析系列的所有问题,有些内容可能会在以后更新. 需要事先申明的是:     1. ...

  4. Sharepoint学习笔记—习题系列--70-573习题解析 --索引目录

                  Sharepoint学习笔记—习题系列--70-573习题解析 为便于查阅,这里整理并列出了我前面播客中的关于70-573习题解析系列的所有问题,有些内容可能会在以后更新, ...

  5. Deep Learning(深度学习)学习笔记整理系列之(五)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  6. Deep Learning(深度学习)学习笔记整理系列之(八)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(七)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. Deep Learning(深度学习)学习笔记整理系列之(六)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  9. Deep Learning(深度学习)学习笔记整理系列之(四)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  10. Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

随机推荐

  1. Code the Tree(图论,树)

    ZOJ Problem Set - 1097 Code the Tree Time Limit: 2 Seconds      Memory Limit: 65536 KB A tree (i.e. ...

  2. 【原】Oracle11gR2图文安装

    作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/4365475.html 本文以看图说话的方 ...

  3. NGUI 修改Shader支持灰色滤镜

    之前有人做过,不过效率不高: http://blog.csdn.net/onerain88/article/details/12197277  他的代码: fixed4 frag (v2f i) : ...

  4. 菜鸟学Windows Phone 8开发(1)——创建第一个应用程序

    本系列文章来源MSDN的 面向完全新手的 Windows Phone 8 开发 主要是想通过翻译本系列文章来巩固下基础知识顺带学习下英语和练习下自己的毅力(因为打算每天翻译一篇,但是发现翻译这篇花费了 ...

  5. Mina、Netty、Twisted一起学(一):实现简单的TCP服务器

    MINA.Netty.Twisted为什么放在一起学习?首先,不妨先分别看一下它们官方网站对其的介绍: MINA: Apache MINA is a network application frame ...

  6. 最近一段时间开发客户端app的感悟

    关于android和cocos2d 凭着对大学时候写html+css的一点点的记忆,我还是认为android的布局xml文件还是参考了html+css,只是他更加臃肿!就想 android平台本身那样 ...

  7. UWP开发入门(十九)——10分钟学会在VS2015中使用Git

    写程序必然需要版本控制,哪怕是个人项目也是必须的.我们在开发UWP APP的时候,VS2015默认提供了对微软TFS和Git的支持.考虑到现在Git很火,作为微软系的程序员也不得不学一点防身,以免被开 ...

  8. CentOS6.5菜鸟之旅:安装Realtek无线网卡驱动

    一.前言 CentOS6.5不像CentOS7和Unbuntu那样自动安装好了无线网卡驱动,因此需要我们折腾一下. 二.安装前的准备工作   [a] 检查无线网卡驱动的安装情况(通过查看网络接口的安装 ...

  9. 转载:第四弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!

    感谢大家支持!博卡君周末休息了两天,今天又回到战斗状态了.上周五晚上微信放出官方工具和教程了,推荐程序猿小伙伴们都去试一试,结合教程和代码,写写自己的 demo 也不错. 闲话不多说,开始更新! 第七 ...

  10. 极简Unity调用Android方法

    简介 之前写了篇unity和Android交互的教程,由于代码里面有些公司的代码,导致很多网友看不懂,并且确实有点小复杂,这里弄一个极简的版本 步骤 废话不多说,直接来步骤吧 1.创建工程,弄大概像这 ...