UnauthorizedWebPart 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用于每当 WebPartManager 控件的 IsAuthorized 方法为 WebPart 控件返回 false
时,创建占位符对象。 此类不能被继承。
public ref class UnauthorizedWebPart sealed : System::Web::UI::WebControls::WebParts::ProxyWebPart
public sealed class UnauthorizedWebPart : System.Web.UI.WebControls.WebParts.ProxyWebPart
type UnauthorizedWebPart = class
inherit ProxyWebPart
Public NotInheritable Class UnauthorizedWebPart
Inherits ProxyWebPart
- 继承
示例
下面的代码示例演示如何使用 UnauthorizedWebPart 控件。
代码示例的第一部分是自定义 WebPartManager 控件,该控件替代 IsAuthorized(WebPart) 方法以创建自定义授权条件。 AuthorizationFilter其WebPart属性设置为特定值的任何控件,或任何没有分配给属性的值的控件都将获得授权,不符合这些条件的控件将不获授权。
using System;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace Samples.AspNet.CS.Controls
{
public class MyManagerAuthorize : WebPartManager
{
public override bool IsAuthorized(Type type, string path, string authorizationFilter, bool isShared)
{
if (!String.IsNullOrEmpty(authorizationFilter))
{
if (authorizationFilter == "admin")
return true;
else
return false;
}
else
{
return true;
}
}
}
}
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Namespace Samples.AspNet.VB.Controls
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class MyManagerAuthorize
Inherits WebPartManager
Public Overrides Function IsAuthorized(ByVal type As Type, _
ByVal path As String, ByVal authorizationFilter As String, _
ByVal isShared As Boolean) As Boolean
If Not String.IsNullOrEmpty(authorizationFilter) Then
If authorizationFilter = "admin" Then
Return True
Else
Return False
End If
Else
Return True
End If
End Function
End Class
End Namespace
代码示例的第二部分是承载自定义 WebPartManager 控件的网页。 元素中 <asp:webpartzone>
声明了三个静态服务器控件。 虽然这些控件实际上 WebPart 不是控件,但它们将在运行时与 对象一起 GenericWebPart 包装,因此你可以将它们视为 WebPart 控件,从而为其 AuthorizationFilter 属性赋值。 请注意,控件 BulletedList 的筛选器设置为应允许根据自定义 WebPartManager 控件中的条件对其进行授权的值。 控件 Label 具有一个筛选器值,应导致它未获得授权。 控件 Calendar 不向 属性赋值,因此默认情况下应对其进行授权。
<%@ Page Language="C#" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
foreach (WebPart part in mgr1.WebParts)
{
if (mgr1.IsAuthorized(part))
part.ExportMode = WebPartExportMode.All;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
Label2.Text = String.Empty;
foreach (WebPart part in mgr1.WebParts)
Label2.Text += part.ID + "<br />";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<aspSample:MyManagerAuthorize ID="mgr1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<asp:BulletedList
ID="BulletedList1"
Runat="server"
DisplayMode="HyperLink"
Title="Favorite Links"
AuthorizationFilter="admin">
<asp:ListItem Value="http://msdn.microsoft.com">
MSDN
</asp:ListItem>
<asp:ListItem Value="http://www.asp.net">
ASP.NET
</asp:ListItem>
<asp:ListItem Value="http://www.msn.com">
MSN
</asp:ListItem>
</asp:BulletedList>
<asp:Label ID="Label1" runat="server"
Text="Hello World"
AuthorizationFilter="user" />
<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
</ZoneTemplate>
</asp:WebPartZone>
<hr />
<asp:Button ID="Button1" runat="server"
Text="List WebPart Controls" OnClick="Button1_Click" />
<br />
<asp:Label ID="Label2" runat="server"
Text="" />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls"
TagPrefix="aspSample"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Load(ByVal sender As Object, _
ByVal e As System.EventArgs)
Dim part As WebPart
For Each part In mgr1.WebParts
If mgr1.IsAuthorized(part) Then
part.ExportMode = WebPartExportMode.All
End If
Next
End Sub
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Label2.Text = String.Empty
Dim part As WebPart
For Each part In mgr1.WebParts
Label2.Text += part.ID & "<br />"
Next
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<aspSample:MyManagerAuthorize ID="mgr1" runat="server" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<asp:BulletedList
ID="BulletedList1"
Runat="server"
DisplayMode="HyperLink"
Title="Favorite Links"
AuthorizationFilter="admin">
<asp:ListItem Value="http://msdn.microsoft.com">
MSDN
</asp:ListItem>
<asp:ListItem Value="http://www.asp.net">
ASP.NET
</asp:ListItem>
<asp:ListItem Value="http://www.msn.com">
MSN
</asp:ListItem>
</asp:BulletedList>
<asp:Label ID="Label1" runat="server"
Text="Hello World"
AuthorizationFilter="user" />
<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
</ZoneTemplate>
</asp:WebPartZone>
<hr />
<asp:Button ID="Button1" runat="server"
Text="List WebPart Controls" OnClick="Button1_Click" />
<br />
<asp:Label ID="Label2" runat="server"
Text="" />
</div>
</form>
</body>
</html>
代码示例的第三部分是必须在 Web.config 文件中添加的设置,以启用导出 Web 部件说明文件。 确保在此代码示例的网页所在的同一目录中有一个 Web.config 文件。 在 节中<system.web>
,确保有一个<webParts>
属性设置为 true
的元素enableExport
,如以下标记所示。
<webParts enableExport="true">
...
</webParts>
在浏览器中加载页面,并注意到 BulletedList 和 Calendar 控件按预期呈现,但 Label 控件未呈现,因为它未授权。 单击“ 列出 Web 部件控件” 按钮会使 WebPartManager 控件列出其 WebParts 集合中所有控件的 ID。 请注意,将列出控件的 Label ID,证明 UnauthorizedWebPart 控件已添加到页面控件树以保留其位置,即使标签未呈现在页面中。
注解
Web 部件控件集提供了一种授权机制,用于确定是否可以将单个 WebPart 控件添加到页面。 开发人员可以选择将任意字符串分配给 AuthorizationFilter 控件上的 WebPart 属性。 当 WebPartManager 控件将控件添加到页面时,它会使用 IsAuthorized 方法根据开发人员设置的条件检查此筛选器值,如果控件未获得授权,则 false
返回 。
注意
此机制还适用于放置在区域中 WebPartZoneBase 的服务器控件和用户控件,因为这些控件在运行时与 对象一 GenericWebPart 起包装,并且此对象继承 AuthorizationFilter 属性。
WebPart当控件未获得授权时,控件会将WebPartManager控件UnauthorizedWebPart插入页面的控件树中,以取代未经授权的控件。 UnauthorizedWebPart控件树中的控件保留未授权控件在页面中的位置,并防止用户以前可能应用于控件WebPart的任何个性化设置数据丢失。
控件 UnauthorizedWebPart 永远不会显示在插入它的页面上,也不会显示在所呈现页面的源代码中。 开发人员可以通过检查 WebParts 控件的 属性来验证其在页面控件树中 WebPartManager 是否存在。
构造函数
UnauthorizedWebPart(String, String, String, String) |
初始化 UnauthorizedWebPart 控件的新实例,在某个动态 WebPart 控件(或者服务器控件或用户控件)授权失败时调用。 |
UnauthorizedWebPart(WebPart) |
初始化 UnauthorizedWebPart 控件的新实例,在某个静态 WebPart 控件(或者服务器控件或用户控件)授权失败时调用。 |
属性
AccessKey |
获取或设置使您得以快速导航到 Web 服务器控件的访问键。 (继承自 WebControl) |
Adapter |
获取控件的浏览器特定适配器。 (继承自 Control) |
AllowClose |
获取或设置一个值,该值指示最终用户是否可以在网页上关闭 WebPart 控件。 (继承自 WebPart) |
AllowConnect |
获取或设置一个值,该值指示 WebPart 控件是否允许其他控件与之形成连接。 (继承自 WebPart) |
AllowEdit |
获取或设置一个值,该值指示最终用户是否可以通过一个或多个 WebPart 控件提供的用户界面 (UI) 修改 EditorPart 控件。 (继承自 WebPart) |
AllowHide |
获取或设置一个值,该值指示是否允许最终用户隐藏 WebPart 控件。 (继承自 WebPart) |
AllowMinimize |
获取或设置一个值,该值指示最终用户是否可以最小化 WebPart 控件。 (继承自 WebPart) |
AllowZoneChange |
获取或设置一个值,该值指示用户是否可以在两个 WebPart 区域之间移动 WebPartZoneBase 控件。 (继承自 WebPart) |
AppRelativeTemplateSourceDirectory |
获取或设置包含该控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。 (继承自 Control) |
Attributes |
获取与控件的特性不对应的任意特性(只用于呈现)的集合。 (继承自 WebControl) |
AuthorizationFilter |
获取或设置一个任意字符串,以确定 WebPart 控件是否已被授权添加至页中。 (继承自 WebPart) |
BackColor |
获取或设置 Web 服务器控件的背景色。 (继承自 WebControl) |
BackImageUrl |
获取或设置面板控件背景图像的 URL。 (继承自 Panel) |
BindingContainer |
获取包含该控件的数据绑定的控件。 (继承自 Control) |
BorderColor |
获取或设置 Web 控件的边框颜色。 (继承自 WebControl) |
BorderStyle |
获取或设置 Web 服务器控件的边框样式。 (继承自 WebControl) |
BorderWidth |
获取或设置 Web 服务器控件的边框宽度。 (继承自 WebControl) |
CatalogIconImageUrl |
获取或设置图像的 URL,该图像在控件目录中表示一个 Web 部件控件。 (继承自 WebPart) |
ChildControlsCreated |
获取一个值,该值指示是否已创建服务器控件的子控件。 (继承自 Control) |
ChromeState |
获取或设置部件控件是处于最小化状态还是正常状态。 (继承自 WebPart) |
ChromeType |
获取或设置构成 Web 部件控件的框架的边框类型。 (继承自 WebPart) |
ClientID |
获取由 ASP.NET 生成的 HTML 标记的控件 ID。 (继承自 Control) |
ClientIDMode |
获取或设置用于生成 ClientID 属性值的算法。 (继承自 Control) |
ClientIDSeparator |
获取一个字符值,该值表示 ClientID 属性中使用的分隔符字符。 (继承自 Control) |
ConnectErrorMessage |
获取在连接过程中发生错误时要向用户显示的错误消息。 (继承自 WebPart) |
Context |
为当前 Web 请求获取与服务器控件关联的 HttpContext 对象。 (继承自 Control) |
Controls |
获取 ControlCollection 对象,该对象包含用户界面层次结构中指定服务器控件的子控件。 (继承自 Part) |
ControlStyle |
获取 Web 服务器控件的样式。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
ControlStyleCreated |
获取一个值,该值指示是否已为 Style 属性创建了 ControlStyle 对象。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
CssClass |
获取或设置由 Web 服务器控件在客户端呈现的级联样式表 (CSS) 类。 (继承自 WebControl) |
DataItemContainer |
如果命名容器实现 IDataItemContainer,则获取对命名容器的引用。 (继承自 Control) |
DataKeysContainer |
如果命名容器实现 IDataKeysControl,则获取对命名容器的引用。 (继承自 Control) |
DefaultButton |
获取或设置 Panel 控件中包含的默认按钮的标识符。 (继承自 Panel) |
Description |
获取或设置一条短语,该短语在部件控件的工具提示和目录中用来概述该部件控件的作用。 (继承自 WebPart) |
DesignMode |
获取一个值,该值指示是否正在使用设计图面上的一个控件。 (继承自 Control) |
Direction |
获取或设置内容在控件中流动的水平方向。 (继承自 WebPart) |
DisplayTitle |
获取一个字符串,其中包含在 WebPart 控件实例的标题栏中实际显示的完整标题文本。 (继承自 WebPart) |
Enabled |
获取或设置一个值,该值指示是否启用 Web 服务器控件。 (继承自 WebControl) |
EnableTheming |
获取或设置一个值,该值指示主题是否应用于该控件。 (继承自 WebControl) |
EnableViewState |
获取或设置一个值,该值指示服务器控件是否向发出请求的客户端保持自己的视图状态以及它所包含的任何子控件的视图状态。 (继承自 Control) |
Events |
获取控件的事件处理程序委托列表。 此属性为只读。 (继承自 Control) |
ExportMode |
获取或设置是否可以导出所有、某些 WebPart 控件属性或不能导出该控件的任何属性。 (继承自 WebPart) |
Font |
获取与 Web 服务器控件关联的字体属性。 (继承自 WebControl) |
ForeColor |
获取或设置 Web 服务器控件的前景色(通常是文本颜色)。 (继承自 WebControl) |
GenericWebPartID |
从由代理 Web 部件控件所替换的一般 Web 部件控件获取 ID 属性的值。 (继承自 ProxyWebPart) |
GroupingText |
获取或设置面板控件中包含的控件组的标题。 (继承自 Panel) |
HasAttributes |
获取一个值,该值指示控件是否具有特性集。 (继承自 WebControl) |
HasChildViewState |
获取一个值,该值指示当前服务器控件的子控件是否具有任何已保存的视图状态设置。 (继承自 Control) |
HasSharedData |
获取一个值,该值指示 WebPart 控件是否有与之关联的任何共享个性化数据。 (继承自 WebPart) |
HasUserData |
获取一个值,该值指示 WebPart 控件是否有与之关联的任何用户个性化数据。 (继承自 WebPart) |
Height |
获取或设置区域的高度。 (继承自 WebPart) |
HelpMode |
获取或设置用于显示 WebPart 控件的帮助内容的用户界面 (UI) 的类型。 (继承自 WebPart) |
HelpUrl |
获取或设置指向 WebPart 控件的帮助文件的 URL。 (继承自 WebPart) |
Hidden |
获取或设置一个值,该值指示是否在网页上显示 WebPart 控件。 (继承自 WebPart) |
HorizontalAlign |
获取或设置面板内容的水平对齐方式。 (继承自 Panel) |
ID |
获取或设置分配给 Web 部件控件的编程标识符。 (继承自 ProxyWebPart) |
IdSeparator |
获取用于分隔控件标识符的字符。 (继承自 Control) |
ImportErrorMessage |
获取或设置在导入 WebPart 控件时发生错误的情况下将显示的错误消息。 (继承自 WebPart) |
IsChildControlStateCleared |
获取一个值,该值指示该控件中包含的控件是否具有控件状态。 (继承自 Control) |
IsClosed |
获取一个值,该值指示 WebPart 控件当前在 Web 部件页上是否已关闭。 (继承自 WebPart) |
IsEnabled |
获取一个值,该值指示是否启用控件。 (继承自 WebControl) |
IsShared |
获取一个值,该值指示 WebPart 控件是否为共享控件,即对 Web 部件页的所有用户都可见。 (继承自 WebPart) |
IsStandalone |
获取一个值,该值指示 WebPart 控件是否是独立控件(即该控件不包含在 WebPartZoneBase 区域中)。 (继承自 WebPart) |
IsStatic |
获取一个值,该值指示 WebPart 控件是否为静态控件,即控件在 Web 部件页的标记中声明,而不是通过编程方式添加至页中。 (继承自 WebPart) |
IsTrackingViewState |
获取一个值,用于指示服务器控件是否会将更改保存到其视图状态中。 (继承自 Control) |
IsViewStateEnabled |
获取一个值,该值指示是否为该控件启用了视图状态。 (继承自 Control) |
LoadViewStateByID |
获取一个值,该值指示控件是否通过 ID 而不是索引参与加载其视图状态。 (继承自 Control) |
NamingContainer |
获取对服务器控件的命名容器的引用,此引用创建唯一的命名空间,以区分具有相同 ID 属性值的服务器控件。 (继承自 Control) |
OriginalID |
获取由代理 Web 部件控件所替换的 Web 部件控件的 ID。 (继承自 ProxyWebPart) |
OriginalPath |
获取要替换的用户控件的路径。 (继承自 ProxyWebPart) |
OriginalTypeName |
获取由代理 Web 部件控件所替换的 Web 部件控件的 Type。 (继承自 ProxyWebPart) |
Page |
获取对包含服务器控件的 Page 实例的引用。 (继承自 Control) |
Parent |
获取对页 UI 层次结构中服务器控件的父控件的引用。 (继承自 Control) |
RenderingCompatibility |
获取一个值,该值指定呈现的 HTML 将与之兼容的 ASP.NET 版本。 (继承自 Control) |
ScrollBars |
获取或设置 Panel 控件中滚动条的可见性和位置。 (继承自 Panel) |
Site |
获取容器信息,该容器在呈现于设计图面上时承载当前控件。 (继承自 Control) |
SkinID |
获取或设置要应用于控件的外观。 (继承自 WebControl) |
Style |
获取将在 Web 服务器控件的外部标记上呈现为样式特性的文本特性的集合。 (继承自 WebControl) |
Subtitle |
获取一个字符串,该字符串与 Title 属性值连接即形成 WebPart 控件的完整标题。 (继承自 WebPart) |
SupportsDisabledAttribute |
获取一个值,该值指示在控件的 |
TabIndex |
获取或设置 Web 服务器控件的选项卡索引。 (继承自 WebControl) |
TagKey |
获取对应于此 Web 服务器控件的 HtmlTextWriterTag 值。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
TagName |
获取控件标记的名称。 此属性主要由控件开发人员使用。 (继承自 WebControl) |
TemplateControl |
获取或设置对包含该控件的模板的引用。 (继承自 Control) |
TemplateSourceDirectory |
获取包含当前服务器控件的 Page 或 UserControl 的虚拟目录。 (继承自 Control) |
Title |
获取或设置部件控件的标题。 (继承自 WebPart) |
TitleIconImageUrl |
获取或设置图像的 URL,该图像用于在控件的标题栏中表示 Web 部件控件。 (继承自 WebPart) |
TitleUrl |
获取或设置有关 WebPart 控件补充信息的 URL。 (继承自 WebPart) |
ToolTip |
获取或设置当鼠标指针悬停在 Web 服务器控件上时显示的文本。 (继承自 WebControl) |
UniqueID |
获取服务器控件的唯一的、以分层形式限定的标识符。 (继承自 Control) |
ValidateRequestMode |
获取或设置指示控件是否检查来自浏览器的客户端输入是否具有潜在危险值的值。 (继承自 Control) |
Verbs |
获取与 WebPart 控件关联的自定义谓词的集合。 (继承自 WebPart) |
ViewState |
获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。 (继承自 Control) |
ViewStateIgnoresCase |
获取一个值,该值指示 StateBag 对象是否不区分大小写。 (继承自 Control) |
ViewStateMode |
获取或设置此控件的视图状态模式。 (继承自 Control) |
Visible |
获取或设置一个值,该值指示服务器控件是否作为 UI 呈现在页上。 (继承自 Control) |
WebBrowsableObject |
获取对 WebPart 控件的引用,以使该控件可由自定义 EditorPart 控件进行编辑。 (继承自 WebPart) |
WebPartManager |
获取对与 WebPartManager 控件实例关联的 WebPart 控件的引用。 (继承自 WebPart) |
Width |
获取或设置 Web 服务器控件的宽度。 (继承自 WebPart) |
Wrap |
获取或设置一个指示面板中的内容是否换行的值。 (继承自 Panel) |
Zone |
获取当前包含 WebPartZoneBase 控件的 WebPart 区域。 (继承自 WebPart) |
ZoneIndex |
获取 WebPart 控件在其区域内的索引位置。 (继承自 WebPart) |
方法
事件
DataBinding |
当服务器控件绑定到数据源时发生。 (继承自 Control) |
Disposed |
当从内存释放服务器控件时发生,这是请求 ASP.NET 页时服务器控件生存期的最后阶段。 (继承自 Control) |
Init |
当服务器控件初始化时发生;初始化是控件生存期的第一步。 (继承自 Control) |
Load |
当服务器控件加载到 Page 对象中时发生。 (继承自 Control) |
PreRender |
在加载 Control 对象之后、呈现之前发生。 (继承自 Control) |
Unload |
当服务器控件从内存中卸载时发生。 (继承自 Control) |
显式接口实现
扩展方法
FindDataSourceControl(Control) |
返回与指定控件的数据控件关联的数据源。 |
FindFieldTemplate(Control, String) |
返回指定控件的命名容器中指定列的字段模板。 |
FindMetaTable(Control) |
返回包含数据控件的元表对象。 |
GetDefaultValues(INamingContainer) |
为指定数据控件获取默认值的集合。 |
GetMetaTable(INamingContainer) |
为指定数据控件获取表元数据。 |
SetMetaTable(INamingContainer, MetaTable) |
为指定数据控件设置表元数据。 |
SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>) |
为指定数据控件设置表元数据和默认值映射。 |
SetMetaTable(INamingContainer, MetaTable, Object) |
为指定数据控件设置表元数据和默认值映射。 |
TryGetMetaTable(INamingContainer, MetaTable) |
确定表元数据是否可用。 |
EnableDynamicData(INamingContainer, Type) |
为指定数据控件启用动态数据行为。 |
EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
为指定数据控件启用动态数据行为。 |
EnableDynamicData(INamingContainer, Type, Object) |
为指定数据控件启用动态数据行为。 |