WebPartChrome 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
개발자는 영역에서 선택한 섹션 또는 서버 컨트롤에 대해서만 렌더링을 재정의 WebPart 할 수 있습니다 WebPartZoneBase .
public ref class WebPartChrome
public class WebPartChrome
type WebPartChrome = class
Public Class WebPartChrome
- 상속
-
WebPartChrome
예제
다음 코드 예제에서는 클래스를 사용 하 여 WebPartChrome 영역에서 컨트롤의 기본 렌더링을 재정의 WebPart 하는 방법을 보여 줍니다 WebPartZoneBase .
코드 예제에는 다음과 같은 네 가지 부분이 있습니다.
웹 파트 페이지에서 표시 모드를 변경할 수 있는 사용자 컨트롤입니다.
예제의 모든 컨트롤을 호스팅하는 웹 페이지입니다.
사용자 지정 WebPartZoneBase 영역 및 클래스에 대한 소스 코드를 포함하는 클래스입니다 WebPartChrome .
예제의 작동 방식에 대한 설명입니다.
코드 예제의 첫 번째 부분은 사용자 컨트롤입니다. 사용자 컨트롤의 소스 코드는 다른 항목에서 제공됩니다. 이 코드 예제가 작동하려면 연습 : 웹 파트 페이지의 표시 모드 변경 항목에서 사용자 컨트롤에 대한 .ascx 파일을 가져와서 이 코드 예제의 .aspx 페이지와 동일한 폴더에 배치해야 합니다.
예제의 두 번째 부분은 웹 페이지입니다.
Register 컴파일된 구성 요소와 태그 접두사를 등록하기 위한 지시문이 파일 맨 위에 있습니다. 또한 페이지는 요소 <aspSample:MyZone> 사용하여 사용자 지정 영역을 참조하고 영역 내에 여러 표준 ASP.NET 서버 컨트롤을 포함합니다. 서버 컨트롤은 실제 기능을 구현하지 않습니다. 여기서는 클래스 기능이 렌더링 영역에 적용되는 방법을 WebPartChrome 설명하는 데만 사용됩니다. 이러한 서버 컨트롤은 실제 WebPart 컨트롤은 아니지만 각각 런타임에 GenericWebPart 개체로 자동으로 래핑(ASP.NET)되므로 WebPart 컨트롤과 동일한 기능을 갖습니다.
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="~/DisplayModeMenuCS.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"
Assembly="MyChromeCS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="WebPartManager1" runat="server" />
<uc1:DisplayModeMenuCS id="menu1" runat="server" />
<aspSample:MyZone ID="WebPartZone1" runat="server"
RenderVerbsInMenu="true">
<PartTitleStyle Font-Bold="true"
BorderWidth="1"
BackColor="lightblue"/>
<ZoneTemplate>
<asp:Panel runat="server" id="panel1"
title="Vote on Issues" >
<asp:RadioButtonList ID="RadioButtonList1" runat="server" >
<asp:ListItem Value="1">Issue 1</asp:ListItem>
<asp:ListItem Value="2">Issue 2</asp:ListItem>
<asp:ListItem Value="3">Issue 3</asp:ListItem>
</asp:RadioButtonList>
<asp:Button ID="Button1" runat="server" Text="Cast Vote" />
</asp:Panel>
<asp:FileUpload ID="FileUpload1" runat="server"
title="Upload Files" />
</ZoneTemplate>
</aspSample:MyZone>
<asp:WebPartZone ID="WebPartZone2" runat="server" />
<asp:EditorZone ID="EditorZone1" runat="server">
<ZoneTemplate>
<asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
</ZoneTemplate>
</asp:EditorZone>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="~/DisplayModeMenuVB.ascx" %>
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"
Assembly="MyChromeVB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="WebPartManager1" runat="server" />
<uc1:DisplayModeMenuVB id="menu1" runat="server" />
<aspSample:MyZone ID="WebPartZone1" runat="server"
RenderVerbsInMenu="true">
<PartTitleStyle Font-Bold="true"
BorderWidth="1"
BackColor="lightblue"/>
<ZoneTemplate>
<asp:Panel runat="server" id="panel1"
title="Vote on Issues" >
<asp:RadioButtonList ID="RadioButtonList1" runat="server" >
<asp:ListItem Value="1">Issue 1</asp:ListItem>
<asp:ListItem Value="2">Issue 2</asp:ListItem>
<asp:ListItem Value="3">Issue 3</asp:ListItem>
</asp:RadioButtonList>
<asp:Button ID="Button1" runat="server" Text="Cast Vote" />
</asp:Panel>
<asp:FileUpload ID="FileUpload1" runat="server"
title="Upload Files" />
</ZoneTemplate>
</aspSample:MyZone>
<asp:WebPartZone ID="WebPartZone2" runat="server" />
<asp:EditorZone ID="EditorZone1" runat="server">
<ZoneTemplate>
<asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
</ZoneTemplate>
</asp:EditorZone>
</form>
</body>
</html>
코드 예제의 세 번째 부분은 사용자 지정 WebPartZoneBase 영역 및 클래스의 소스입니다 WebPartChrome . 사용자 지정 영역 클래스에 대한 생성자에서 코드는 속성을 확인합니다 MyZone.RenderVerbsInMenu . 값이 true면 영역의 WebPart 각 컨트롤에 대한 메뉴에서 동사가 렌더링됩니다. 이는 웹 파트 컨트롤 집합의 일반적인 기본 동작입니다.
MyZone.RenderVerbsInMenu 속성 값이 false이 사용자 지정 영역의 기본값인 경우 동사는 각 컨트롤의 제목 표시줄에 링크로 개별적으로 렌더링됩니다. 요소가 선언된 웹 페이지 코드 <aspSample:MyZone> 에는 RenderVerbsInMenu 동사가 컨트롤의 메뉴에 표시되도록 설정된 특성 true이 있습니다. 이 기능을 실험하려면 선언적 RenderVerbsInMenu 특성을 false링크로 설정하고 동사가 링크로 렌더링되는 방식을 확인할 수 있습니다.
사용자 지정 WebPartChrome 클래스는 여러 메서드에서 렌더링을 재정의하고 사용자 지정 영역은 해당 MyWebPartChrome 메서드에 클래스의 인스턴스를 CreateWebPartChrome 만듭니다. 그러면 사용자 지정 렌더링이 페이지에 적용됩니다. 코드 예제를 실행하려면 이 소스 코드를 컴파일해야 합니다. 명시적으로 컴파일하고 결과 어셈블리를 웹 사이트의 Bin 폴더 또는 전역 어셈블리 캐시에 넣을 수 있습니다. 또는 사이트의 App_Code 폴더에 소스 코드를 배치하여 런타임에 동적으로 컴파일할 수 있습니다. 두 가지 컴파일 방법을 모두 보여 주는 연습은 연습 : 사용자 지정 웹 서버 컨트롤 개발 및 사용을 참조하세요.
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class MyZone : WebPartZone
{
private Boolean _renderVerbsInMenu;
protected override WebPartChrome CreateWebPartChrome()
{
WebPartChrome theChrome = new MyWebPartChrome(this,
this.WebPartManager);
if (RenderVerbsInMenu)
this.WebPartVerbRenderMode = WebPartVerbRenderMode.Menu;
else
this.WebPartVerbRenderMode = WebPartVerbRenderMode.TitleBar;
return theChrome;
}
public Boolean RenderVerbsInMenu
{
get { return _renderVerbsInMenu; }
set { _renderVerbsInMenu = value; }
}
}
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class MyWebPartChrome : WebPartChrome
{
WebPartZoneBase theZone;
WebPartManager theManager;
public MyWebPartChrome(WebPartZoneBase aZone, WebPartManager aManager) :
base(aZone, aManager)
{
theZone = aZone;
theManager = aManager;
}
protected override WebPartVerbCollection GetWebPartVerbs(WebPart webPart)
{
ArrayList verbSet = new ArrayList();
foreach (WebPartVerb verb in base.GetWebPartVerbs(webPart))
{
if (verb.Text != "Close")
verbSet.Add(verb);
}
WebPartVerbCollection reducedVerbSet =
new WebPartVerbCollection(verbSet);
return reducedVerbSet;
}
protected override Style CreateWebPartChromeStyle(WebPart part,
PartChromeType chromeType)
{
Style finalStyle = new Style();
finalStyle.CopyFrom(base.CreateWebPartChromeStyle(part, chromeType));
finalStyle.Font.Name = "Verdana";
return finalStyle;
}
protected override void RenderPartContents(HtmlTextWriter writer,
WebPart part)
{
if (part == this.WebPartManager.SelectedWebPart)
HttpContext.Current.Response.Write("<span>Not rendered</span>");
else
if(this.Zone.GetType() == typeof(MyZone))
part.RenderControl(writer);
}
}
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
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 MyZone
Inherits WebPartZone
Private _renderVerbsInMenu As Boolean
Protected Overrides Function CreateWebPartChrome() As WebPartChrome
Dim theChrome As WebPartChrome = _
New MyWebPartChrome(Me, Me.WebPartManager)
If RenderVerbsInMenu Then
Me.WebPartVerbRenderMode = WebPartVerbRenderMode.Menu
Else
Me.WebPartVerbRenderMode = WebPartVerbRenderMode.TitleBar
End If
Return theChrome
End Function
Public Property RenderVerbsInMenu() As Boolean
Get
Return _renderVerbsInMenu
End Get
Set(ByVal value As Boolean)
_renderVerbsInMenu = value
End Set
End Property
End Class
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class MyWebPartChrome
Inherits WebPartChrome
Dim theManager As WebPartManager
Dim theZone As WebPartZoneBase
Public Sub New(ByVal aZone As WebPartZoneBase, _
ByVal aManager As WebPartManager)
MyBase.New(aZone, aManager)
theManager = aManager
theZone = aZone
End Sub
Protected Overrides Function GetWebPartVerbs _
(ByVal webPart As WebPart) As WebPartVerbCollection
Dim verbSet As New ArrayList()
Dim verb As WebPartVerb
For Each verb In MyBase.GetWebPartVerbs(webPart)
If verb.Text <> "Close" Then
verbSet.Add(verb)
End If
Next verb
Dim reducedVerbSet As WebPartVerbCollection = _
New WebPartVerbCollection(verbSet)
Return reducedVerbSet
End Function
Protected Overrides Function CreateWebPartChromeStyle _
(ByVal part As WebPart, ByVal chromeType As PartChromeType) As Style
Dim finalStyle As New Style()
finalStyle.CopyFrom(MyBase.CreateWebPartChromeStyle(Part, chromeType))
finalStyle.Font.Name = "Verdana"
Return finalStyle
End Function
Protected Overrides Sub RenderPartContents _
(ByVal writer As HtmlTextWriter, ByVal part As WebPart)
If part Is Me.WebPartManager.SelectedWebPart Then
HttpContext.Current.Response.Write("<span>Not rendered</span>")
Else
If (Me.Zone.GetType() Is GetType(MyZone)) Then
part.RenderControl(writer)
End If
End If
End Sub
End Class
End Namespace
브라우저에서 웹 페이지를 로드할 때 클래스의 MyWebPartChrome 소스 코드에서 만든 다양한 스타일 및 기타 렌더링 사용자 지정이 영역에 렌더링된 컨트롤에 WebPart 어떻게 표시되는지 확인할 수 있습니다.
설명
웹 파트 크롬은 영역에 포함된 WebPart 각 WebPartZoneBase 컨트롤 또는 서버 컨트롤의 프레임을 구성하는 주변 장치 UI(사용자 인터페이스) 요소를 나타냅니다. 컨트롤의 크롬에는 테두리, 제목 표시줄 및 제목 표시줄 내에 표시되는 아이콘, 제목 텍스트 및 동사 메뉴가 포함됩니다. 크롬의 모양은 영역 수준에서 설정되며 영역의 모든 서버 컨트롤에 적용됩니다.
웹 파트 컨트롤 집합은 클래스를 WebPartChrome 사용하여 컨트롤에 대한 크롬을 WebPart 렌더링합니다. 또한 이 클래스는 개발자가 해당 컨트롤에 대한 모든 렌더링을 처리하지 않고도 영역에 있는 WebPart 컨트롤의 개별 섹션(예: 머리글 또는 바닥글)의 WebPartZoneBase 렌더링을 사용자 지정할 수 있는 방법을 제공합니다. 예를 들어 영역에 적용된 특정 스타일 특성을 사용자 지정하기 위해 메서드를 재정 CreateWebPartChromeStyle 의 WebPartZoneBase 할 수 있지만 나머지를 처리하기 위해 기본 렌더링을 사용할 수 있습니다.
이 WebPartChrome 클래스에는 컨트롤 렌더링을 재정의 WebPart 하려는 경우에 유용한 몇 가지 중요한 메서드가 포함되어 있습니다. 하나는 컨트롤을 CreateWebPartChromeStyle 렌더링하는 데 사용되는 개체와 Style 연결된 개체의 WebPartChrome 스타일 특성을 변경할 수 있는 메서드입니다. 또 다른 생성 WebPartChrome 자는 사용자 지정 클래스의 메서드를 CreateWebPartChrome 재정의하여 사용자 지정 WebPartZoneBaseWebPartChrome 개체의 인스턴스를 만들 때 사용하는 생성자입니다. 또 다른 유용한 방법은 RenderPartContents 머리글, 바닥글 및 제목 표시줄과 같은 Chrome 요소와 달리 영역에서 컨트롤의 콘텐츠 영역 렌더링을 제어하는 데 사용할 수 있는 방법입니다. 어떤 이유로 사용자가 UI에서 해당 동사를 볼 수 없도록 하려면 이 GetWebPartVerbs 메서드를 사용하여 특정 동사를 렌더링에서 제외할 수 있습니다. 마지막으로, 컨트롤 렌더링의 모든 측면에 대한 완전한 프로그래밍 방식 제어를 WebPart 원하는 경우 메서드를 재정의할 RenderWebPart 수 있습니다.
클래스의 WebPartChrome 여러 속성도 유용합니다. 및 속성은 Zone 각각 개체 및 현재 WebPartManager 인스턴스와 WebPartChrome 연결된 영역에 대한 참조를 WebPartManager 제공합니다.
상속자 참고
특정 섹션 WebPartChrome 또는 서버 컨트롤의 기본 렌더링을 재정의하려는 경우 클래스에서 WebPart 상속합니다. 필요에 따라 메서드, 메서드, CreateWebPartChromeStyle(WebPart, PartChromeType) 특히 메서드를 GetWebPartVerbs(WebPart) 재정 RenderPartContents(HtmlTextWriter, WebPart) 의 RenderWebPart(HtmlTextWriter, WebPart) 하여 렌더링을 사용자 지정할 수 있습니다. 영역의 WebPartChrome 컨트롤에 사용자 지정 WebPart 클래스를 사용하려면 클래스에서 파생된 사용자 지정 영역을 개발하고 해당 메서드를 재정의 WebPartZoneBase 합니다CreateWebPartChrome(). 영역에서 자식 WebPartChrome 개체를 사용하는 방법에 대한 자세한 내용은 예제 섹션을 참조하세요.
생성자
| Name | Description |
|---|---|
| WebPartChrome(WebPartZoneBase, WebPartManager) |
컨트롤의 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| DragDropEnabled |
컨트롤을 영역 내/외부로 끌 수 있는지 여부를 나타내는 값을 가져옵니다. |
| WebPartManager |
현재 WebPartManager 인스턴스에 대한 참조를 가져옵니다. |
| Zone |
연결된 영역에 대한 참조를 WebPartZoneBase 가져옵니다. |
메서드
| Name | Description |
|---|---|
| CreateWebPartChromeStyle(WebPart, PartChromeType) |
개체에서 렌더링하는 각 WebPart 컨트롤에 대한 스타일 특성을 제공하는 스타일 개체를 WebPartChrome 만듭니다. |
| Equals(Object) |
지정된 개체가 현재 개체와 같은지 여부를 확인합니다. (다음에서 상속됨 Object) |
| FilterWebPartVerbs(WebPartVerbCollection, WebPart) |
개발자가 제공한 조건에 따라 특정 동사가 렌더링되는 것을 제외합니다. |
| GetHashCode() |
기본 해시 함수로 사용됩니다. (다음에서 상속됨 Object) |
| GetType() |
현재 인스턴스의 Type 가져옵니다. (다음에서 상속됨 Object) |
| GetWebPartChromeClientID(WebPart) |
웹 페이지에서 렌더링된 개체의 WebPartChrome 클라이언트 ID를 가져옵니다. |
| GetWebPartTitleClientID(WebPart) |
컨트롤의 제목이 들어 있는 테이블 셀의 클라이언트 ID를 WebPart 가져옵니다. |
| GetWebPartVerbs(WebPart) |
컨트롤을 사용하여 렌더링 WebPart 해야 하는 동사의 컬렉션을 가져옵니다. |
| MemberwiseClone() |
현재 Object단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
| PerformPreRender() |
컨트롤을 렌더링하기 전에 수행해야 하는 WebPart 작업을 수행합니다. |
| RenderPartContents(HtmlTextWriter, WebPart) |
머리글과 바닥글을 제외한 컨트롤의 WebPart 기본 콘텐츠 영역을 렌더링합니다. |
| RenderWebPart(HtmlTextWriter, WebPart) |
모든 섹션을 사용하여 전체 WebPart 컨트롤을 렌더링합니다. |
| ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |