13.6 编辑器区域
利用(Editor zone),用户可以修改WebPart的属性和行为,WebPartManager的DisplayMode设置为WebPartManager.EditDisplayMode时才会显示编辑器区域。编辑器区域显示一个或多个编辑器(Editor)WebPart,每个WebPart有一个特定功能。如果没有任何WebPart,编辑器区域则没有任何功能(参见图13-10)。

图13-10 编辑器区域(没有编辑器WebPart)
有4个编辑器WebPart,它们可以采用任何顺序使用,可能出现也可能不出现,这取决于所编辑的WebPart的功能。编辑器区域中设置的修改将随个性化信息保存,因此将在会话之间持久存储。个性化活动可能会改变完成个性化的WebPart的样式。例如,编辑一个WebPart时应用了SelectedPartChromeStyle:
<SelectedPartChromeStyle BorderColor="#A7B756"
BorderStyle="Dotted" BorderWidth="5px" />
这会在所编辑的WebPart周围加一个虚线边框,从而更清楚地看出选择了哪个WebPart。
13.6.1 AppearanceEditorPart
外观编辑器WebPart(Appearance Editor Part)(参见图13-11)允许修改WebPart的外观,包括:
q Title,这是标题栏中出现的文本。
q Chrome Type,这是标题和边框类型。利用一个下拉列表,可以选择不同类型,包括Default、Title and Border、Title Only、Border Only和None(无)。
q Direction,这指示WebPart中文本流的方向,包括Not Set(未设置)、Left to Right或Right to Left。
q Height和Width,可以设置WebPart的高度和宽度。利用下拉列表,可以选择pixels、picas、points、inches、millimeters、centimeters、percent、em(相对于父元素的字体)、ex(相对于父元素字体的字符x的高度)。
q Hidden,使WebPart在显示模式时隐藏,而在编辑模式时可见。
13.6.2 BehaviorEditorPart
行为编辑器WebPart(参见图13-12)允许修改WebPart的行为,包括:
q Description,这是在标题上出现的工具提示。
q Title Link,提供WebPart详细信息的一个URL,如果设置,标题则成为一个可点击的链接。
q Title Icon Image Link,这是标题栏上显示在标题旁边的一个图像的URL。
q Catalog Icon Image Link,这是WebPart显示在一个编目中时所显示图像的URL。
q Help Link,提供WebPart更多帮助的URL,如果设置,verb菜单中会显示帮助链接。
q Help Mode,定义如何显示帮助文件,可以采用模式(Modal)、非模式(Modeless)方式,或者直接导航到文件(Navigate)。
q Import Error Message,如果导入WebPart时出现一个错误就会显示这个错误消息。
q Export Mode,定义是否允许导出(Do not allow),或者如果允许导出,是否导出所有数据(Export all data),或者只导出非敏感数据(Non-sensitive data only)。
q Authorization Filter,指示这个WebPart的授权。有关的更多详细内容参见“授权过滤器”一节。Allow___(Close、Connect、Edit、Hide、Minimize和Zone Change)指示哪个verb出现在verb菜单上,以及WebPart是否能在区域间移动。
授权过滤器
授权过滤器属性可以用于存储关于WebPart的所有授权信息。例如,如果想根据角色对WebPart授权,可以存储一个角色名列表(用逗号分隔)。不过,WebPart不会自动注意到授权,所以必须执行你自己的逻辑来确定一个WebPart是否得到授权。最简单的办法是使用WebPart- Manager的AuthorizeWebPart事件。例如,考虑代码清单13-12,WebPartManager会为每个WebPart调用这个代码,来确保已经授权它在页面上使用。
代码清单13-12 对WebPart授权
protected void WebPartManager1_AuthorizeWebPart(
object sender, WebPartAuthorizationEventArgs e)
{
Type msnWeather = typeof(MSNWeatherWebPart);
if (e.Type.IsAssignableFrom(msnWeather))
e.IsAuthorized = false;
else
e.IsAuthorized = true;
}
这段代码检查WebPart的类型,并设置IsAuthorized属性来指示是否授权这个WebPart可以使用。可以将这段代码与用户和/或角色认证相结合,如代码清单13-13所示,在此只有当用户属于Admin角色时才会显示MSNWeatherWebPart。
代码清单13-13 结合WebPart授权和角色
protected void WebPartManager1_AuthorizeWebPart(
object sender, WebPartAuthorizationEventArgs e)
{
Type msnWeather = typeof(MSNWeatherWebPart);
if (e.Type.IsAssignableFrom(msnWeather) &&
!User.IsInRole("Admin"))
e.IsAuthorized = false;
else
e.IsAuthorized = true;
}
由于此逻辑适用于WebPartManager,如果希望跨多页实现这种授权,有两个选择:第一个选择是使用母版页,并把WebPartManager和相关的代码放在母版页中;第二个办法是从WebPartManager派生一个子类,并把通用授权代码放在派生类中。
对于页面编目,DeclarativeCatalogPart显式地查看各个WebPart是否得到授权,如果没有,这个WebPart不会在编目中显示。由于PageCatalog只显示页面中已经包含的WebPart,所以不会显示未授权的WebPart。
13.6.3
LayoutEditorPart
布局编辑器WebPart(Layout Editor Part)(参见图13-13)定义了一个WebPart出现在哪个区域中,以及这个WebPart的状态是正常状态还是最小化状态。区域索引(Zone Index)标识了区域中WebPart的顺序,索引为0的WebPart是第一个WebPart。
13.6.4 PropertyGridEditorPart
属性表格编辑器WebPart(Property Grid Editor Part)显示一个WebPart的定制属性,并用于向用户提供定制属性。例如,考虑一个天气WebPart,它将数天的天气预报显示为表格中的一系列图像。可以让用户选择这些图像是水平对齐还是垂直对齐。在这个WebPart中,这会定义为一个公共属性(可能定义为一个枚举)。考虑代码清单13-14,在此属性名为Orientation,这里使用了WeatherOrientation作为允许的选项。为了确保它会提供到属性表格,在此使用了Personalizable和WebBrowseable属性。
代码清单13-14 提供WebPart中的定制属性
public enum WeatherOrientation
{
Horizontal,
Vertical
};
private WeatherOrientation _orientation =
WeatherOrientation.Horizontal;
[Personalizable]
[WebBrowsable]
public WeatherOrientation Orientation
{
get { return _orientation; }
set { _orientation = value; }
}
编辑这个WebPart时,属性表格(参见图13-14)显示了定制属性,标量类型显示为一个文本框,枚举显示为一个列表。如果改变方向,WebPart就会换种方式显示其天气图像,这就使用户有机会与WebPart本身交互。

图13-14 YahooWeatherWebPart的属性表格







