LoginViewDesigner 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在視覺化設計工具中,為 LoginView Web 伺服器控制項提供設計階段支援。
public ref class LoginViewDesigner : System::Web::UI::Design::ControlDesigner
public class LoginViewDesigner : System.Web.UI.Design.ControlDesigner
type LoginViewDesigner = class
inherit ControlDesigner
Public Class LoginViewDesigner
Inherits ControlDesigner
- 繼承
範例
下列程式代碼範例示範如何擴充 LoginViewDesigner 類別,以變更在設計時間衍生自 LoginView 控件的外觀和行為。
此範例會 MyLoginView
從 LoginView衍生控件。
MyLoginView
是控件的LoginView複本。 此範例也會從 類別衍生 MyLoginViewDesigner
類別,LoginViewDesigner並在控件上MyLoginView
套用 DesignerAttribute 屬性MyLoginViewDesigner
。
控制者 MyLoginViewDesigner
會覆寫下列 LoginViewDesigner 成員:
在PreFilterProperties設計時間讓屬性顯示在 [屬性] 方格中的方法NamingContainer。
在 GetDesignTimeHtml 控件周圍繪製橙色框線的方法,使其範圍更可見。
GetErrorDesignTimeHtml產生佔位元標記的方法,其中包含以紅色、粗體文字轉譯的錯誤訊息。
GetEmptyDesignTimeHtml產生佔位元標記的方法,其中包含為控件定義的角色組名。
Initialize如果相關聯的控件不是
MyLoginView
物件,則擲回ArgumentException例外狀況的方法。
using System;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.Design;
using System.Web.UI.Design.WebControls;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
namespace Examples.CS.WebControls.Design
{
// The MyLoginView is a copy of the LoginView.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
[Designer(typeof(Examples.CS.WebControls.Design.MyLoginViewDesigner))]
public class MyLoginView : LoginView
{
} // MyLoginView
// Override members of the LoginViewDesigner.
[ReflectionPermission(SecurityAction.Demand, Flags=ReflectionPermissionFlag.MemberAccess)]
public class MyLoginViewDesigner : LoginViewDesigner
{
// Generate the design-time markup for the control when an error occurs.
protected override string GetErrorDesignTimeHtml(Exception ex)
{
// Write the error message text in red, bold.
string errorRendering =
"<span style=\"font-weight:bold; color:Red; \">" +
ex.Message + "</span>";
return CreatePlaceHolderDesignTimeHtml(errorRendering);
} // GetErrorDesignTimeHtml
// Generate the design-time markup for the control
// when the template is empty.
protected override string GetEmptyDesignTimeHtml()
{
// Generate a design-time placeholder containing the names of all
// the role groups.
MyLoginView myLoginViewCtl = (MyLoginView)ViewControl;
RoleGroupCollection roleGroups = myLoginViewCtl.RoleGroups;
string roleNames = null;
// If there are any role groups, form a string of their names.
if (roleGroups.Count > 0)
{
roleNames = "Role Groups: <br /> " +
roleGroups[0].ToString();
for( int rgX = 1; rgX < roleGroups.Count; rgX++ )
roleNames +=
"<br /> " + roleGroups[rgX].ToString();
}
return CreatePlaceHolderDesignTimeHtml( roleNames);
} // GetEmptyDesignTimeHtml
// Shadow control properties with design-time properties.
protected override void PreFilterProperties(IDictionary properties)
{
// Call the base method first.
base.PreFilterProperties(properties);
// Make the NamingContainer visible in the Properties grid.
PropertyDescriptor selectProp =
(PropertyDescriptor)properties["NamingContainer"];
properties["NamingContainer"] =
TypeDescriptor.CreateProperty(selectProp.ComponentType,
selectProp, BrowsableAttribute.Yes);
} // PreFilterProperties
// Generate the design-time markup.
public override string GetDesignTimeHtml(DesignerRegionCollection regions)
{
// Make the control more visible in the designer.
// Enclose the markup in a table with an orange border.
const string openTableMarkup =
"<table><tr><td style=\"border:4 solid #FF7F00;\">";
const string closeTableMarkup = "</td></tr></table>";
// Call the base method to generate the markup.
string markup = base.GetDesignTimeHtml(regions);
return openTableMarkup + markup + closeTableMarkup;
} // GetDesignTimeHtml
public override void Initialize(IComponent component)
{
// Ensure that only a MyLoginView can be created in this designer.
if (!(component is MyLoginView))
throw new ArgumentException();
// Call the base method to generate the markup.
base.Initialize(component);
} // Initialize
} // MyLoginViewDesigner
} // Examples.CS.WebControls.Design
Imports System.Web
Imports System.Web.UI.WebControls
Imports System.Web.UI.Design
Imports System.Web.UI.Design.WebControls
Imports System.Collections
Imports System.ComponentModel
Imports System.Security.Permissions
Imports System.IO
Namespace Examples.VB.WebControls.Design
' The MyLoginView is a copy of the LoginView.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<Designer(GetType(Examples.VB.WebControls.Design.MyLoginViewDesigner))> _
Public Class MyLoginView
Inherits LoginView
End Class
' Override members of the LoginViewDesigner.
<ReflectionPermission(SecurityAction.Demand, Flags:=ReflectionPermissionFlag.MemberAccess)> _
Public Class MyLoginViewDesigner
Inherits LoginViewDesigner
' Generate the design-time markup for the control when an error occurs.
Protected Overrides Function GetErrorDesignTimeHtml( _
ByVal ex As Exception) As String
' Write the error message text in red, bold.
Dim errorRendering As String = _
"<span style=""font-weight:bold; color:Red; "">" & _
ex.Message & "</span>"
Return CreatePlaceHolderDesignTimeHtml(errorRendering)
End Function ' GetErrorDesignTimeHtml
' Generate the design-time markup for the control
' when the template is empty.
Protected Overrides Function GetEmptyDesignTimeHtml() As String
' Generate a design-time placeholder containing the names of all
' the role groups.
Dim myLoginViewCtl As MyLoginView = CType(ViewControl, MyLoginView)
Dim roleGroups As RoleGroupCollection = myLoginViewCtl.RoleGroups
Dim RoleNames As String = Nothing
Dim rgX As Integer
' If there are any role groups, form a string of their names.
If roleGroups.Count > 0 Then
roleNames = "Role Groups: <br /> " & _
roleGroups(0).ToString()
For rgX = 1 To roleGroups.Count - 1
roleNames &= "<br /> " & _
roleGroups(rgX).ToString()
Next rgX
End If
Return CreatePlaceHolderDesignTimeHtml(roleNames)
End Function ' GetEmptyDesignTimeHtml
' Shadow control properties with design-time properties.
Protected Overrides Sub PreFilterProperties( _
ByVal properties As IDictionary)
' Call the base method first.
MyBase.PreFilterProperties(properties)
' Make the NamingContainer visible in the Properties grid.
Dim selectProp As PropertyDescriptor = _
CType(properties("NamingContainer"), PropertyDescriptor)
properties("NamingContainer") = _
TypeDescriptor.CreateProperty(selectProp.ComponentType, _
selectProp, BrowsableAttribute.Yes)
End Sub
' Generate the design-time markup.
Public Overrides Function GetDesignTimeHtml( _
ByVal regions As DesignerRegionCollection) As String
' Make the control more visible in the designer.
' Enclose the markup in a table with an orange border.
Dim openTableMarkup As String = _
"<table><tr><td style=""border:4 solid #FF7F00;"">"
Dim closeTableMarkup As String = "</td></tr></table>"
' Call the base method to generate the markup.
Dim markup As String = MyBase.GetDesignTimeHtml(regions)
Return openTableMarkup & markup & closeTableMarkup
End Function ' GetDesignTimeHtml
' Generate the design time markup.
Public Overrides Sub Initialize(ByVal component As IComponent)
' Ensure that only a MyLoginView can be created in this designer.
If Not TypeOf component Is MyLoginView Then
Throw New ArgumentException()
End If
' Call the base method to generate the markup.
MyBase.Initialize(component)
End Sub
End Class
End Namespace ' Examples.VB.WebControls.Design
備註
控件 LoginView 會轉譯其其中一個範本,取決於使用者是否登入主機網站,以及包含登入用戶帳戶的角色。
在可視化設計工具中,當您從 [來源] 切換至 [設計] 檢視時,會剖析描述 LoginView 控件的標記原始程式碼,並在設計介面上建立控件的設計時間版本。 當您切換回 [來源] 檢視時,設計時間控件會保存到標記原始程式碼,並編輯成網頁的標記。 類別 LoginViewDesigner 提供控制件的設計時間支援 LoginView 。
屬性會 ActionLists 傳 DesignerActionListCollection 回 物件,該物件通常包含衍生自 DesignerActionList 設計工具繼承樹狀結構中每個層級之類別的物件。 屬性 TemplateGroups 會傳回相關聯 LoginView 控件範本的樣板群組集合。 屬性 UsePreviewControl 一律會傳 true
回 ,表示設計工具會建立相關聯 LoginView 控件的暫存複本,以產生設計時間標記。
類別 LoginViewDesigner 方法提供下列功能:
方法 GetDesignTimeHtml 會傳回標記,用來在設計時間轉譯相關聯的 LoginView 控件。 方法 GetEmptyDesignTimeHtml 會取得標記,這個標記會在未定義目前範本時,在設計時間呈現相關聯控件的佔位元。 方法 GetErrorDesignTimeHtml 會提供標記,這個標記會在發生錯誤時,在設計時間呈現相關聯的控件。
方法 GetEditableDesignerRegionContent 會傳回相關聯 LoginView 控件之目前範本的串行化複本。 SetEditableDesignerRegionContent方法會從控件範本的串行化複本設定相關聯控件的區域。
方法 Initialize 會準備設計工具,以檢視、編輯及設計相關聯的 LoginView 控件。 當相關聯控件有變更時,就會 OnComponentChanged 呼叫 方法。 方法 PreFilterProperties 可用來從中移除屬性、將其他屬性加入關聯控件的陰影屬性或陰影屬性。
建構函式
LoginViewDesigner() |
初始化 LoginViewDesigner 類別的新執行個體。 |
屬性
ActionLists |
取得此設計工具的行動清單集合。 |
AllowResize |
取得值,指出是否可在設計階段環境中調整控制項的大小。 (繼承來源 ControlDesigner) |
AssociatedComponents |
取得元件集合,該集合與設計工具管理的元件相關聯。 (繼承來源 ComponentDesigner) |
AutoFormats |
針對設計階段的相關聯控制項,取得要在 [自動格式化] 對話方塊中顯示之預先定義的自動格式化配置集合。 (繼承來源 ControlDesigner) |
Behavior |
已淘汰.
取得或設定與設計工具相關聯的 DHTML 行為。 (繼承來源 HtmlControlDesigner) |
Component |
取得這個設計工具正在設計的元件。 (繼承來源 ComponentDesigner) |
DataBindings |
取得目前控制項的資料繫結 (Data Binding) 集合。 (繼承來源 HtmlControlDesigner) |
DataBindingsEnabled |
取得值,指出關聯控制項的包含區域是否支援資料繫結。 (繼承來源 ControlDesigner) |
DesignerState |
取得物件,用於在設計階段保存關聯控制項的資料。 (繼承來源 ControlDesigner) |
DesignTimeElement |
已淘汰.
取得設計階段物件,表示與設計介面上 HtmlControlDesigner 物件相關聯的控制項。 (繼承來源 HtmlControlDesigner) |
DesignTimeElementView |
已淘汰.
取得控制項設計工具的檢視控制項物件。 (繼承來源 ControlDesigner) |
DesignTimeHtmlRequiresLoadComplete |
已淘汰.
取得值,指出設計主應用程式在呼叫 GetDesignTimeHtml 方法之前是否必須完成載入。 (繼承來源 ControlDesigner) |
Expressions |
在設計階段取得目前控制項的運算式繫結。 (繼承來源 HtmlControlDesigner) |
HidePropertiesInTemplateMode |
取得值,指示當控制項處於樣板模式時,關聯控制項的屬性是否會隱藏。 (繼承來源 ControlDesigner) |
ID |
取得或設定控制項的 ID 字串。 (繼承來源 ControlDesigner) |
InheritanceAttribute |
取得屬性 (Attribute),表示相關元件的繼承 (Inheritance) 型別。 (繼承來源 ComponentDesigner) |
Inherited |
取得值,表示是否要繼承這個元件。 (繼承來源 ComponentDesigner) |
InTemplateMode |
取得值,指出控制項在設計主應用程式中處於樣板檢視模式還是編輯模式。 InTemplateMode 屬性是唯讀的。 (繼承來源 ControlDesigner) |
IsDirty |
已淘汰.
取得或設定值,指出 Web 伺服器控制項是否已標記為變更。 (繼承來源 ControlDesigner) |
ParentComponent |
取得這個設計工具的父元件。 (繼承來源 ComponentDesigner) |
ReadOnly |
已淘汰.
取得或設定值,指出控制項屬性於設計階段是否為唯讀。 (繼承來源 ControlDesigner) |
RootDesigner |
為包含關聯控制項的 Web Form 網頁,取得控制項設計工具。 (繼承來源 ControlDesigner) |
SetTextualDefaultProperty |
在視覺化設計工具中,為 LoginView Web 伺服器控制項提供設計階段支援。 (繼承來源 ComponentDesigner) |
ShadowProperties |
取得覆寫使用者設定的屬性值集合。 (繼承來源 ComponentDesigner) |
ShouldCodeSerialize |
已淘汰.
取得或設定值,指出是否應該於序列化 (Serialization) 期間,在程式碼後置 (Code-Behind) 檔案中為目前設計文件建立控制項的欄位宣告。 (繼承來源 HtmlControlDesigner) |
Tag |
取得物件,表示關聯控制項的 HTML 標記項目。 (繼承來源 ControlDesigner) |
TemplateGroups |
取得關聯控制項欄位的範本群組集合。 |
UsePreviewControl |
取得值,指出設計工具是否應該使用暫存複本,而非與設計工具關聯的實際控制項,來產生設計階段標記。 |
Verbs |
取得與設計工具相關元件所支援的設計階段動詞命令 (Verb)。 (繼承來源 ComponentDesigner) |
ViewControl |
取得或設定 Web 伺服器控制項,可用於預覽設計階段的 HTML 標記。 (繼承來源 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) |