다음을 통해 공유


WebPart.AllowClose 속성

정의

최종 사용자가 웹 페이지에서 WebPart 컨트롤을 닫을 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

public:
 virtual property bool AllowClose { bool get(); void set(bool value); };
[System.Web.UI.Themeable(false)]
[System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)]
public virtual bool AllowClose { get; set; }
[<System.Web.UI.Themeable(false)>]
[<System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)>]
member this.AllowClose : bool with get, set
Public Overridable Property AllowClose As Boolean

속성 값

Boolean

웹 페이지에서 컨트롤을 닫을 수 있으면 true이고, 그렇지 않으면 false입니다. 기본값은 true입니다.

특성

예제

다음 코드 예제에서는 닫을 수 없도록 사용자 지정 WebPart 컨트롤에 AllowClose 대 한 속성의 기본 설정을 변경 하는 방법을 보여 줍니다.

이 예제의 첫 번째 부분에는 명명TextDisplayWebPart된 사용자 지정 WebPart 컨트롤에 대한 코드가 포함되어 있습니다. 사용자 지정 컨트롤 TextDisplayWebPart.AllowClose 의 생성자에서 속성이 설정 false되므로 사용자가 웹 페이지에서 컨트롤을 닫지 못하게 하는 효과가 있습니다. 즉, 컨트롤의 동사 메뉴에 있는 닫기 동사가 사용자에 대해 비활성화됩니다. 코드 예제를 실행하려면 이 소스 코드를 컴파일해야 합니다. 명시적으로 컴파일하고 결과 어셈블리를 웹 사이트의 Bin 폴더 또는 전역 어셈블리 캐시에 배치할 수 있습니다. 또는 소스 코드를 사이트의 App_Code 폴더에 배치하여 런타임에 동적으로 컴파일할 수 있습니다. 이 코드 예제에서는 소스 코드를 어셈블리로 컴파일할 웹 애플리케이션의 Bin 하위 폴더에 배치 및 가정 사용 하 여 어셈블리 참조를 Register 웹 페이지 지시문입니다. 두 가지 컴파일 방법을 모두 보여 주는 연습은 연습 : 사용자 지정 웹 서버 컨트롤 개발 및 사용을 참조하세요.

using System;
using System.Security.Permissions;
using System.Web;
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 TextDisplayWebPart : WebPart
  {
    private String _contentText = null;
    TextBox input;
    Label DisplayContent;

    public TextDisplayWebPart()
    {
      this.AllowClose = false;
    }

    [Personalizable(), WebBrowsable]
    public String ContentText
    {
      get { return _contentText; }
      set { _contentText = value; }
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      DisplayContent = new Label();
      DisplayContent.BackColor = 
        System.Drawing.Color.LightBlue;
      DisplayContent.Text = this.ContentText;
      this.Controls.Add(DisplayContent);
      input = new TextBox();
      this.Controls.Add(input);
      Button update = new Button();
      update.Text = "Set Label Content";
      update.Click += new EventHandler(this.submit_Click);
      this.Controls.Add(update);
      ChildControlsCreated = true;
    }

    private void submit_Click(object sender, EventArgs e)
    {
      // Update the label string.
      if (!string.IsNullOrEmpty(input.Text))
      {
        _contentText = input.Text + @"<br />";
        input.Text = String.Empty;
        DisplayContent.Text = this.ContentText;
      }
    }
  }
}
Imports System.Security.Permissions
Imports System.Web
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 TextDisplayWebPart
    Inherits WebPart
    Private _contentText As String = Nothing
    Private input As TextBox
    Private DisplayContent As Label
    
    
    Public Sub New() 
      Me.AllowClose = False
    End Sub
    
    <Personalizable(), WebBrowsable()>  _
    Public Property ContentText() As String 
        Get
            Return _contentText
        End Get
        Set
            _contentText = value
        End Set
    End Property
     
    Protected Overrides Sub CreateChildControls() 
        Controls.Clear()
        DisplayContent = New Label()
        DisplayContent.Text = Me.ContentText
        DisplayContent.BackColor = _
          System.Drawing.Color.LightBlue
        Me.Controls.Add(DisplayContent)
        input = New TextBox()
        Me.Controls.Add(input)
        Dim update As New Button()
        update.Text = "Set Label Content"
        AddHandler update.Click, AddressOf Me.submit_Click
        Me.Controls.Add(update)
        ChildControlsCreated = True
    
    End Sub
    
    
    Private Sub submit_Click(ByVal sender As Object, _
                             ByVal e As EventArgs) 
        ' Update the label string.
        If input.Text <> String.Empty Then
            _contentText = input.Text & "<br />"
            input.Text = String.Empty
            DisplayContent.Text = Me.ContentText
        End If
    
    End Sub
    
End Class

End Namespace

예제의 두 번째 부분에서는 ASP.NET 웹 페이지에서 컨트롤을 참조 TextDisplayWebPart 하는 방법을 보여줍니다. 컨트롤을 <aspSample:TextDisplayWebPart> 참조하는 요소에서 컨트롤의 생성자가 설정한 속성 값을 변경할 수도 있습니다. 컨트롤을 닫을 수 있도록 하려면 선언적 태그의 요소에 특성을 추가 AllowClose="true" 하기만 하면 됩니다.

<%@ page language="C#" %>
<%@ register tagprefix="aspSample" 
             Namespace="Samples.AspNet.CS.Controls" 
             Assembly="TextDisplayWebPartCS"%>

<!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 id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="Form1" runat="server">
    <asp:webpartmanager id="WebPartManager1" runat="server" />
    <asp:webpartzone
      id="WebPartZone1"
      runat="server"
      title="Zone 1"
      PartChromeType="TitleAndBorder">
        <parttitlestyle font-bold="true" ForeColor="#3300cc" />
        <partstyle
          borderwidth="1px"   
          borderstyle="Solid"  
          bordercolor="#81AAF2" />
        <zonetemplate>
          <aspSample:TextDisplayWebPart 
            runat="server"   
            id="textwebpart" 
            title = "Text Content WebPart" />
        </zonetemplate>
    </asp:webpartzone>
  </form>
</body>
</html>
<%@ page language="VB" %>
<%@ register tagprefix="aspSample" 
             Namespace="Samples.AspNet.VB.Controls" 
             Assembly="TextDisplayWebPartVB"%>

<!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 id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="Form1" runat="server">
    <asp:webpartmanager id="WebPartManager1" runat="server" />
    <asp:webpartzone
      id="WebPartZone1"
      runat="server"
      title="Zone 1"
      PartChromeType="TitleAndBorder">
        <parttitlestyle font-bold="true" ForeColor="#3300cc" />
        <partstyle
          borderwidth="1px"   
          borderstyle="Solid"  
          bordercolor="#81AAF2" />
        <zonetemplate>
          <aspSample:TextDisplayWebPart 
            runat="server"   
            id="textwebpart" 
            title = "Text Content WebPart" />
        </zonetemplate>
    </asp:webpartzone>
  </form>
</body>
</html>

설명

사용자가 웹 페이지에서 컨트롤을 WebPart 닫으면 컨트롤이 더 이상 표시되지 않거나 페이지에서 사용할 수 없습니다. 닫힌 컨트롤은 컨트롤에 대한 참조를 저장하는 웹 파트 엔터티인 페이지 카탈로그에 추가됩니다. 개발자가 PageCatalogPart 컨트롤 내 CatalogZone 의 페이지에 컨트롤을 추가하는 경우 사용자는 페이지를 카탈로그 표시 모드로 전환하고 페이지 카탈로그에서 닫힌 컨트롤을 선택한 다음 페이지에 다시 추가할 수 있습니다.

참고

닫힌 WebPart 컨트롤은 프로그래밍 방식으로 또는 페이지가 카탈로그 표시 모드에 있을 때 페이지 카탈로그에서 닫힌 컨트롤을 선택하는 사용자가 페이지에 다시 추가할 수 있습니다.

컨트롤을 WebPart 닫는 것은 삭제와 다릅니다. 삭제된 컨트롤이 영구적으로 제거되는 동안 닫힌 컨트롤을 페이지에 다시 추가할 수 있습니다. 컨트롤 삭제에 대한 자세한 내용은 메서드를 참조하세요 DeleteWebPart . 컨트롤을 닫는 것은 컨트롤을 숨기는 작업과도 다릅니다. 숨겨진 컨트롤은 여전히 페이지에 있고, 여전히 페이지 수명 주기 이벤트에 참여하고, 사용자의 보기에서만 숨겨져 있지만, 닫힌 컨트롤은 페이지에서 렌더링되지 않습니다.

정적 컨트롤과 동적 WebPart 컨트롤(동적 컨트롤이 프로그래밍 방식으로 추가되는 동안 정적 컨트롤은 페이지의 태그에 선언됨)을 모두 닫을 수 있습니다.

개발자가 AllowClose 속성을 false설정하면 닫기 동사가 컨트롤에 나타나지 않고 사용자가 컨트롤을 닫을 수 없습니다.

이 속성은 테마 또는 스타일시트 테마에 의해 설정될 수 없습니다. 자세한 내용은 ThemeableAttribute 하 고 ASP.NET 테마 및 스킨합니다.

이 속성의 개인 설정 범위는 권한 있는 사용자에 의해서만 설정 Shared 되고 수정할 수 있습니다. 자세한 내용은 개인 설정 개요를 참조PersonalizableAttribute하고 웹 파트.

적용 대상

추가 정보