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) |
適用於
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應