WebPartDesigner 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对 WebPart 控件的设计时视觉支持。
public ref class WebPartDesigner : System::Web::UI::Design::WebControls::WebParts::PartDesigner
public class WebPartDesigner : System.Web.UI.Design.WebControls.WebParts.PartDesigner
type WebPartDesigner = class
inherit PartDesigner
Public Class WebPartDesigner
Inherits PartDesigner
- 继承
示例
下面的代码示例演示 控件与其关联的 WebPartDesigner之间的WebPart交互。 控件 WebPart 包含一个 Calendar 控件,最终用户从中选择其生日,一个 Button 用于提交选择的控件,以及一个 Label 用于显示用户生日消息的控件。 验证 WebPartDesigner 关联的控件是否为预期类型,然后自定义所述控件的设计时呈现。 请注意,设计器的可视自定义项仅在设计时可见,而关联控件的自定义项在运行时和设计时都可见。
此示例中重写的所有方法都派生自 ControlDesigner 基类。 有关其他可用成员及其用法,请参阅 System.Web.UI.Design.ControlDesigner。
using System;
using System.Security.Permissions;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.Design.WebControls.WebParts;
using System.ComponentModel;
/// <summary>
/// BirthdayPart demonstrates some of the most
/// common overrides of members of the WebPart
/// class. BirthdayPartDesigner shows how to
/// customize the rendering of a custom WebPart
/// control.
/// </summary>
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level=AspNetHostingPermissionLevel.Minimal)]
[Designer(typeof(BirthdayPartDesigner))]
public class BirthdayPart : WebPart
{
private DateTime birthDate;
Calendar input;
Label displayContent;
public BirthdayPart()
{
this.AllowClose = false;
this.Title = "Enter your birthday";
}
[
Personalizable(PersonalizationScope.User, true),
WebBrowsable()
]
public DateTime BirthDate
{
get { return birthDate; }
set { birthDate = value; }
}
// Set the appearance of the control at run time.
protected override void CreateChildControls()
{
Controls.Clear();
input = new Calendar();
this.Controls.Add(input);
Button update = new Button();
update.Text = "Submit";
update.Click += new EventHandler(this.submit_Click);
this.Controls.Add(update);
displayContent = new Label();
displayContent.BackColor =
System.Drawing.Color.LightBlue;
Literal br = new Literal();
br.Text = "<br />";
if ((this.birthDate.Day == DateTime.Now.Day)
&& (this.birthDate.Month == DateTime.Now.Month))
{
displayContent.Text = "Happy Birthday!";
this.Controls.Add(br);
this.Controls.Add(displayContent);
}
}
private void submit_Click(object sender, EventArgs e)
{
this.birthDate = input.SelectedDate;
}
}
public class BirthdayPartDesigner : WebPartDesigner
{
public override void Initialize(IComponent component)
{
// Verify that the associated control is a BirthdayPart.
if (!typeof(BirthdayPart).IsInstanceOfType(component))
{
throw new ArgumentException("The specified control is not of type 'BirthdayPart'", "component");
}
base.Initialize(component);
}
// Here is where you make customizations
// to design time appearance that will not
// be visible to the end user.
public override string GetDesignTimeHtml()
{
string designTimeHtml = null;
try
{
designTimeHtml = base.GetDesignTimeHtml();
string s = "<hr /><hr />I just added these lines to the"
+ " bottom of the control.<hr /><hr /></div>";
designTimeHtml = designTimeHtml.Replace("</div>", s);
}
catch (Exception ex)
{
designTimeHtml = GetErrorDesignTimeHtml(ex);
}
finally
{
// undo any changes in the try block
}
if ((designTimeHtml == null) || (designTimeHtml.Length == 0))
{
designTimeHtml = GetEmptyDesignTimeHtml();
}
return designTimeHtml;
}
// This method normally returns a blank string.
// Override to return a meaningful message.
protected override string GetEmptyDesignTimeHtml()
{
return CreatePlaceHolderDesignTimeHtml(
"<hr />If the page developer forgot to fill in a " +
"required property you could tell them here.<hr />");
}
// Add specific text to the generic error message.
protected override string GetErrorDesignTimeHtml(Exception e)
{
string s = "<hr />The control failed to render.";
return(s + e.Message + "<hr />");
}
}
}
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.Design.WebControls.WebParts
Imports System.ComponentModel
' BirthdayPart demonstrates some of the most
' common overrides of members of the WebPart
' class. BirthdayPartDesigner shows how to
' customize the rendering of a custom WebPart
' control.
Namespace Samples.AspNet.VB.Controls
<AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, Level:=AspNetHostingPermissionLevel.Minimal)> _
<Designer(GetType(BirthdayPartDesigner))> _
Public Class BirthdayPart
Inherits WebPart
Private m_birthDate As DateTime
Private input As Calendar
Private displayContent As Label
Public Sub New()
Me.AllowClose = False
Me.Title = "Enter your birthday"
End Sub
<Personalizable(PersonalizationScope.User, True), WebBrowsable()> _
Public Property BirthDate() As DateTime
Get
Return m_birthDate
End Get
Set(value As DateTime)
m_birthDate = value
End Set
End Property
' Set the appearance of the control at run time.
Protected Overrides Sub CreateChildControls()
Controls.Clear()
input = New Calendar()
Me.Controls.Add(input)
Dim update As New Button()
update.Text = "Submit"
AddHandler update.Click, New EventHandler(AddressOf Me.submit_Click)
Me.Controls.Add(update)
displayContent = New Label()
displayContent.BackColor = System.Drawing.Color.LightBlue
Dim br As New Literal()
br.Text = "<br />"
If (Me.m_birthDate.Day = DateTime.Now.Day) AndAlso (Me.m_birthDate.Month = DateTime.Now.Month) Then
displayContent.Text = "Happy Birthday!"
Me.Controls.Add(br)
Me.Controls.Add(displayContent)
End If
End Sub
Private Sub submit_Click(sender As Object, e As EventArgs)
Me.m_birthDate = input.SelectedDate
End Sub
End Class
Public Class BirthdayPartDesigner
Inherits WebPartDesigner
Public Overrides Sub Initialize(component As IComponent)
' Verify that the associated control is a BirthdayPart.
If Not GetType(BirthdayPart).IsInstanceOfType(component) Then
Throw New ArgumentException("The specified control is not of type 'BirthdayPart'", "component")
End If
MyBase.Initialize(component)
End Sub
' Here is where you make customizations
' to design time appearance that will not
' be visible to the end user.
Public Overrides Function GetDesignTimeHtml() As String
Dim designTimeHtml As String = Nothing
Try
designTimeHtml = MyBase.GetDesignTimeHtml()
Dim s As String = "<hr /><hr />I just added these lines to the" & " bottom of the control.<hr /><hr /></div>"
designTimeHtml = designTimeHtml.Replace("</div>", s)
Catch ex As Exception
designTimeHtml = GetErrorDesignTimeHtml(ex)
' undo any changes in the try block
Finally
End Try
If (designTimeHtml Is Nothing) OrElse (designTimeHtml.Length = 0) Then
designTimeHtml = GetEmptyDesignTimeHtml()
End If
Return designTimeHtml
End Function
' This method normally returns a blank string.
' Override to return a meaningful message.
Protected Overrides Function GetEmptyDesignTimeHtml() As String
Return CreatePlaceHolderDesignTimeHtml("<hr />If the page developer forgot to fill in a " & "required property you could tell them here.<hr />")
End Function
' Add specific text to the generic error message.
Protected Overrides Function GetErrorDesignTimeHtml(e As Exception) As String
Dim s As String = "<hr />The control failed to render."
Return (s & e.Message & "<hr />")
End Function
End Class
End Namespace
注解
类 WebPartDesigner 在设计时为 WebPart 控件提供可视表示形式。 它派生自 类, PartDesigner 并添加验证以验证关联的控件是否为 WebPart 控件或派生类型。
WebPartDesigner
UsePreviewControl从其父级继承属性,该属性始终设置为 true
。 这会导致可视化设计环境生成一个 View 控件,以在设计图面上保存 的 WebPart 临时副本;然后,此副本将持久保存到标记中。 如果重写 UsePreviewControl 属性以返回 false
,则可视化设计环境直接从实际 WebPart 控件生成标记。
Web 部件设计器通常与常规控件设计器非常类似;用于设置设计时外观的主要方法派生自 ControlDesigner 类。 具体而言,可以重写 GetDesignTimeHtml 方法以更改与控件关联的设计时标记。 同样,可以重写 GetErrorDesignTimeHtml 和 GetEmptyDesignTimeHtml 方法来分别 (“”) 处理错误和空字符串。
构造函数
WebPartDesigner() |
初始化 WebPartDesigner 类的新实例。 |
属性
ActionLists |
获取控件设计器的操作列表集合。 (继承自 ControlDesigner) |
AllowResize |
获取一个值,该值指示是否可以在设计时环境中调整控件的大小。 (继承自 ControlDesigner) |
AssociatedComponents |
获取与设计器所管理的组件关联的组件集合。 (继承自 ComponentDesigner) |
AutoFormats |
获取预定义自动格式设置方案的集合,这些方案将在设计时显示于关联控件的“自动套用格式”对话框中。 (继承自 ControlDesigner) |
Behavior |
已过时.
获取或设置与设计器关联的 DHTML 行为。 (继承自 HtmlControlDesigner) |
Component |
获取此设计器正在设计的组件。 (继承自 ComponentDesigner) |
DataBindings |
获取当前控件的数据绑定集合。 (继承自 HtmlControlDesigner) |
DataBindingsEnabled |
获取一个值,该值指示包含关联控件的区域是否支持数据绑定。 (继承自 ControlDesigner) |
DesignerState |
获取用于在设计时保持关联控件数据的对象。 (继承自 ControlDesigner) |
DesignTimeElement |
已过时.
获取一个设计时对象,该对象表示与设计图面上的 HtmlControlDesigner 对象关联的控件。 (继承自 HtmlControlDesigner) |
DesignTimeElementView |
已过时.
获取控件设计器的视图控件对象。 (继承自 ControlDesigner) |
DesignTimeHtmlRequiresLoadComplete |
已过时.
获取一个值,该值指示是否必须在设计宿主完成加载之后才能调用 GetDesignTimeHtml 方法。 (继承自 ControlDesigner) |
Expressions |
获取当前控件在设计时的表达式绑定。 (继承自 HtmlControlDesigner) |
HidePropertiesInTemplateMode |
获取一个值,该值指示当控件处于模板模式时,关联控件的属性是否被隐藏。 (继承自 ControlDesigner) |
ID |
获取或设置控件的 ID 字符串。 (继承自 ControlDesigner) |
InheritanceAttribute |
获取一个特性,该特性指示关联组件的继承类型。 (继承自 ComponentDesigner) |
Inherited |
获取一个值,该值指示是否继承此组件。 (继承自 ComponentDesigner) |
InTemplateMode |
获取一个值,该值指示控件在设计宿主中是否处于模板查看模式或模板编辑模式之一。 InTemplateMode 属性为只读。 (继承自 ControlDesigner) |
IsDirty |
已过时.
获取或设置一个值,该值指示 Web 服务器控件是否已被标记为已更改。 (继承自 ControlDesigner) |
ParentComponent |
获取此设计器的父组件。 (继承自 ComponentDesigner) |
ReadOnly |
已过时.
获取或设置一个值,该值指示控件的属性在设计时是否为只读。 (继承自 ControlDesigner) |
RootDesigner |
获取包含关联控件的 Web 窗体页的控件设计器。 (继承自 ControlDesigner) |
SetTextualDefaultProperty |
提供对 WebPart 控件的设计时视觉支持。 (继承自 ComponentDesigner) |
ShadowProperties |
获取重写用户设置的属性值的集合。 (继承自 ComponentDesigner) |
ShouldCodeSerialize |
已过时.
获取或设置一个值,该值指示在序列化期间是否应为当前设计文档在代码隐藏文件中创建控件的字段声明。 (继承自 HtmlControlDesigner) |
Tag |
获取表示关联控件的 HTML 标记元素的对象。 (继承自 ControlDesigner) |
TemplateGroups |
获取一个模板组集合,其中每个模板组包含一个或多个模板定义。 (继承自 ControlDesigner) |
UsePreviewControl |
获取一个值,该值指示设计器是否应使用临时副本取代与设计器关联的实际控件来生成设计时标记。 (继承自 PartDesigner) |
Verbs |
获取与设计器相关联的组件所支持的设计时谓词。 (继承自 ComponentDesigner) |
ViewControl |
获取或设置可用于预览设计时 HTML 标记的 Web 服务器控件。 (继承自 ControlDesigner) |
ViewControlCreated |
获取或设置一个值,该值指示是否已创建 |
Visible |
获取指示该控件在设计时是否可见的值。 (继承自 ControlDesigner) |
方法
显式接口实现
IDesignerFilter.PostFilterAttributes(IDictionary) |
有关此成员的说明,请参见 PostFilterAttributes(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PostFilterEvents(IDictionary) |
有关此成员的说明,请参见 PostFilterEvents(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PostFilterProperties(IDictionary) |
有关此成员的说明,请参见 PostFilterProperties(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PreFilterAttributes(IDictionary) |
有关此成员的说明,请参见 PreFilterAttributes(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PreFilterEvents(IDictionary) |
有关此成员的说明,请参见 PreFilterEvents(IDictionary) 方法。 (继承自 ComponentDesigner) |
IDesignerFilter.PreFilterProperties(IDictionary) |
有关此成员的说明,请参见 PreFilterProperties(IDictionary) 方法。 (继承自 ComponentDesigner) |
ITreeDesigner.Children |
有关此成员的说明,请参见 Children 属性。 (继承自 ComponentDesigner) |
ITreeDesigner.Parent |
有关此成员的说明,请参见 Parent 属性。 (继承自 ComponentDesigner) |