다음을 통해 공유


HtmlSelectBuilder 클래스

정의

파서와 상호 작용하여 컨트롤을 빌드합니다 HtmlSelect .

public ref class HtmlSelectBuilder : System::Web::UI::ControlBuilder
public class HtmlSelectBuilder : System.Web.UI.ControlBuilder
type HtmlSelectBuilder = class
    inherit ControlBuilder
Public Class HtmlSelectBuilder
Inherits ControlBuilder
상속
HtmlSelectBuilder

예제

다음 코드 예제에서는 사용자 지정 HtmlSelectBuilder 컨트롤의 자식 요소의 <option> 두 가지 형식을 정의한 다음 각 형식을 다르게 처리하는 사용자 지정 HtmlSelect 컨트롤을 만드는 방법을 보여 줍니다.

<%@ Page Language="C#"%>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls" Assembly="Samples.AspNet.CS" %>

<!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>HtmlSelectBuilder Example</title>
</head>
  <body>
    <form id="Form1" runat="server">
      <h3>HtmlSelectBuilder Example</h3>

      <aspSample:CustomHtmlSelect
       id="customhtmlselect1"
       runat="server">
      <aspSample:MyOption1 optionid="option1" value="1" text="item 1"/>
      <aspSample:MyOption1 optionid="option2" value="2" text="item 2"/>
      <aspSample:MyOption2 optionid="option3" value="3" text="item 3"/>
      <aspSample:MyOption2 optionid="option4" value="4" text="item 4"/>
      </aspSample:CustomHtmlSelect>

    </form>

  </body>

</html>
<%@ Page Language="VB"%>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB.Controls" Assembly="Samples.AspNet.VB" %>

<!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>HtmlSelectBuilder Example</title>
</head>
  <body>
    <form id="Form1" runat="server">
      <h3>HtmlSelectBuilder Example</h3>

      <aspSample:CustomHtmlSelect
       id="customhtmlselect1"
       runat="server">
      <aspSample:MyOption1 optionid="option1" value="1" text="item 1"/>
      <aspSample:MyOption1 optionid="option2" value="2" text="item 2"/>
      <aspSample:MyOption2 optionid="option3" value="3" text="item 3"/>
      <aspSample:MyOption2 optionid="option4" value="4" text="item 4"/>
      </aspSample:CustomHtmlSelect>

    </form>

  </body>

</html>
using System;
using System.Security.Permissions;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
        // Define a type of child control for the custom HtmlSelect control.
    public class MyOption1
    {
        string _id;
        string _value;
        string _text;

        public string optionid
        {
            get
            { return _id; }
            set
            { _id = value; }
        }

        public string value
        {
            get
            { return _value; }
            set
            { _value = value; }
        }

        public string text
        {
            get
            { return _text; }
            set
            { _text = value; }
        }
    }

       // Define a type of child control for the custom HtmlSelect control.
    public class MyOption2
    {
        string _id;
        string _value;
        string _text;

        public string optionid
        {
            get
            { return _id; }
            set
            { _id = value; }
        }

        public string value
        {
            get
            { return _value; }
            set
            { _value = value; }
        }

        public string text
        {
            get
            { return _text; }
            set
            { _text = value; }
        }
    }

    // Define a custom HtmlSelectBuilder control.
    public class MyHtmlSelectBuilder : HtmlSelectBuilder
    {
        [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
        public override Type GetChildControlType(string tagName, IDictionary attribs)
        {
            // Distinguish between two possible types of child controls.
            if (tagName.ToLower().EndsWith("myoption1"))
            {
                return typeof(MyOption1);
            }
            else if (tagName.ToLower().EndsWith("myoption2"))
            {
                return typeof(MyOption2);
            }
            return null;
        }
    }

    [ControlBuilderAttribute(typeof(MyHtmlSelectBuilder))]
    public class CustomHtmlSelect : HtmlSelect
    {
        
        // Override AddParsedSubObject to treat the two types
        // of child controls differently.
        protected override void AddParsedSubObject(object obj)
        {
            string _outputtext;
            if (obj is MyOption1)
            {
                _outputtext = "option group 1: " + ((MyOption1)obj).text;
                ListItem li = new ListItem(_outputtext, ((MyOption1)obj).value);
                base.Items.Add(li);
            }
            if (obj is MyOption2)
            {
                _outputtext = "option group 2: " + ((MyOption2)obj).text;
                ListItem li = new ListItem(_outputtext, ((MyOption2)obj).value);
                base.Items.Add(li);
            }
        }
    }
}
Imports System.Security.Permissions
Imports System.Collections
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Namespace Samples.AspNet.VB.Controls
    ' Define a type of child control for the custom HtmlSelect control.
    Public Class MyOption1
        Private _id As String
        Private _value As String
        Private _text As String


        Public Property optionid() As String
            Get
                Return _id
            End Get
            Set(ByVal value As String)
                _id = value
            End Set
        End Property

        Public Property value() As String
            Get
                Return _value
            End Get
            Set(ByVal value As String)
                _value = value
            End Set
        End Property

        Public Property [text]() As String
            Get
                Return _text
            End Get
            Set(ByVal value As String)
                _text = value
            End Set
        End Property
    End Class 

    ' Define a type of child control for the custom HtmlSelect control.
    Public Class MyOption2
        Private _id As String
        Private _value As String
        Private _text As String


        Public Property optionid() As String
            Get
                Return _id
            End Get
            Set(ByVal value As String)
                _id = value
            End Set
        End Property

        Public Property value() As String
            Get
                Return _value
            End Get
            Set(ByVal value As String)
                _value = value
            End Set
        End Property

        Public Property [text]() As String
            Get
                Return _text
            End Get
            Set(ByVal value As String)
                _text = value
            End Set
        End Property
    End Class 

    ' Define a custom HtmlSelectBuilder control.
    Public Class MyHtmlSelectBuilder
        Inherits HtmlSelectBuilder

        <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
        Public Overrides Function GetChildControlType(ByVal tagName As String, ByVal attribs As IDictionary) As Type

            ' Distinguish between two possible types of child controls.
            If tagName.ToLower().EndsWith("myoption1") Then
                Return GetType(MyOption1)
            ElseIf tagName.ToLower().EndsWith("myoption2") Then
                Return GetType(MyOption2)
            End If
            Return Nothing

        End Function 
    End Class 

    <ControlBuilderAttribute(GetType(MyHtmlSelectBuilder))> _
    Public Class CustomHtmlSelect
        Inherits HtmlSelect

        ' Override AddParsedSubObject to treat the two types
        ' of child controls differently.
        Protected Overrides Sub AddParsedSubObject(ByVal obj As Object)
            Dim _outputtext As String
            If TypeOf obj Is MyOption1 Then
                _outputtext = "option group 1: " + CType(obj, MyOption1).text
                Dim li As New ListItem(_outputtext, CType(obj, MyOption1).value)
                MyBase.Items.Add(li)
            End If
            If TypeOf obj Is MyOption2 Then
                _outputtext = "option group 2: " + CType(obj, MyOption2).text
                Dim li As New ListItem(_outputtext, CType(obj, MyOption2).value)
                MyBase.Items.Add(li)
            End If

        End Sub 
    End Class 
End Namespace

설명

컨트롤은 HtmlSelectBuilder 페이지 파서와 상호 작용하여 컨트롤을 빌드합니다 HtmlSelect . 컨트롤을 HtmlSelectBuilder 사용하여 컨트롤의 HtmlSelect 구문 분석을 사용자 지정합니다.

AllowWhitespaceLiterals() 이 속성은 공백이 항상 무시되도록 설정 false 됩니다. 메서드를 GetChildControlType 사용하여 컨트롤의 자식 컨트롤 형식을 HtmlSelect 확인합니다.

상속자 참고

컨트롤에 대한 HtmlSelect 사용자 지정 컨트롤 작성기를 만들려면 이 클래스에서 상속해야 합니다.

생성자

Name Description
HtmlSelectBuilder()

HtmlSelectBuilder 클래스의 새 인스턴스를 초기화합니다.

속성

Name Description
BindingContainerBuilder

이 작성기에서 만드는 컨트롤의 바인딩 컨테이너에 해당하는 컨트롤 작성기를 가져옵니다.

(다음에서 상속됨 ControlBuilder)
BindingContainerType

이 작성기에서 만드는 컨트롤에 대한 바인딩 컨테이너의 형식을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
ComplexPropertyEntries

복합 속성 항목의 컬렉션을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
ControlType

Type 만들 컨트롤의 값을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
CurrentFilterResolutionService

디자이너에서 컨트롤을 IFilterResolutionService 구문 분석하고 유지할 때 디바이스 필터 관련 서비스를 관리하는 데 사용되는 개체를 가져옵니다.

(다음에서 상속됨 ControlBuilder)
DeclareType

코드 생성에서 컨트롤을 선언하는 데 사용할 형식을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
FChildrenAsProperties

컨트롤 ParseChildrenAttributeChildrenAsProperties 에 설정된 값이 다음으로 설정되어 true있는지 여부를 결정하는 값을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
FIsNonParserAccessor

컨트롤이 인터페이스를 구현하는지 여부를 결정하는 값을 가져옵니다 IParserAccessor .

(다음에서 상속됨 ControlBuilder)
HasAspCode

컨트롤에 코드 블록이 포함되어 있는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
ID

빌드할 컨트롤의 식별자 속성을 가져오거나 설정합니다.

(다음에서 상속됨 ControlBuilder)
InDesigner

디자이너에서 ControlBuilder 실행 중인지 여부를 반환합니다.

(다음에서 상속됨 ControlBuilder)
InPageTheme

ControlBuilder 개체가 페이지 테마를 생성하는 데 사용되는지 여부를 나타내는 부울 값을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
ItemType

바인딩 컨테이너에 설정된 형식을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
Localize

ControlBuilder 개체에서 만든 컨트롤이 지역화되어 있는지 여부를 나타내는 부울 값을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
NamingContainerType

이 작성기에서 만드는 컨트롤에 대한 명명 컨테이너의 형식을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
PageVirtualPath

ControlBuilder 인스턴스에서 빌드할 페이지의 가상 경로를 가져옵니다.

(다음에서 상속됨 ControlBuilder)
Parser

컨트롤 구 TemplateParser 문 분석 담당자를 가져옵니다.

(다음에서 상속됨 ControlBuilder)
ServiceProvider

ControlBuilder 개체의 서비스 개체를 가져옵니다.

(다음에서 상속됨 ControlBuilder)
SubBuilders

ControlBuilder 개체의 자식 ControlBuilder 개체 목록을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
TagName

빌드할 컨트롤의 태그 이름을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
TemplatePropertyEntries

템플릿 속성 항목의 컬렉션을 가져옵니다.

(다음에서 상속됨 ControlBuilder)
ThemeResolutionService

IThemeResolutionService 디자인 타임에 컨트롤 테마와 스킨을 관리하는 데 사용되는 개체를 가져옵니다.

(다음에서 상속됨 ControlBuilder)

메서드

Name Description
AllowWhitespaceLiterals()

컨트롤의 공백 리터럴을 HtmlSelect 처리할지 아니면 무시할지를 결정합니다.

AppendLiteralString(String)

지정된 리터럴 콘텐츠를 컨트롤에 추가합니다. 이 메서드는 ASP.NET 페이지 프레임워크에서 호출됩니다.

(다음에서 상속됨 ControlBuilder)
AppendSubBuilder(ControlBuilder)

컨테이너 컨트롤에 ControlBuilder 속하는 자식 컨트롤의 개체에 작성기를 추가합니다.

(다음에서 상속됨 ControlBuilder)
BuildObject()

ControlBuilder 개체에서 참조하는 컨트롤의 디자인 타임 인스턴스를 빌드합니다.

(다음에서 상속됨 ControlBuilder)
CloseControl()

컨트롤의 여는 태그와 닫는 태그의 구문 분석이 완료되었다는 것을 작성기에게 알리기 위해 파서가 호출합니다.

(다음에서 상속됨 ControlBuilder)
Equals(Object)

지정된 개체가 현재 개체와 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetChildControlType(String, IDictionary)

컨트롤의 Type 자식 컨트롤에 HtmlSelect 대한 값을 가져옵니다.

GetHashCode()

기본 해시 함수로 사용됩니다.

(다음에서 상속됨 Object)
GetObjectPersistData()

ControlBuilder 개체에 ObjectPersistData 대한 개체를 만듭니다.

(다음에서 상속됨 ControlBuilder)
GetResourceKey()

ControlBuilder 개체의 리소스 키를 검색합니다.

(다음에서 상속됨 ControlBuilder)
GetType()

현재 인스턴스의 Type 가져옵니다.

(다음에서 상속됨 Object)
HasBody()

컨트롤에 여는 태그와 닫는 태그가 둘 다 있는지 확인합니다. 이 메서드는 ASP.NET 페이지 프레임워크에서 호출됩니다.

(다음에서 상속됨 ControlBuilder)
HtmlDecodeLiterals()

HTML 컨트롤의 리터럴 문자열을 HTML 디코딩해야 하는지 여부를 결정합니다. 이 메서드는 ASP.NET 페이지 프레임워크에서 호출됩니다.

(다음에서 상속됨 ControlBuilder)
Init(TemplateParser, ControlBuilder, Type, String, String, IDictionary)

인스턴스화된 후 사용할 대상을 초기화 ControlBuilder 합니다. 이 메서드는 ASP.NET 페이지 프레임워크에서 호출됩니다.

(다음에서 상속됨 ControlBuilder)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
NeedsTagInnerText()

컨트롤 작성기에서 내부 텍스트를 가져와야 하는지 여부를 결정합니다. 이 경우 메서드를 SetTagInnerText(String) 호출해야 합니다. 이 메서드는 ASP.NET 페이지 프레임워크에서 호출됩니다.

(다음에서 상속됨 ControlBuilder)
OnAppendToParentBuilder(ControlBuilder)

부모 컨트롤 작성기에서 ControlBuilder 추가되고 있음을 알 수 있습니다.

(다음에서 상속됨 ControlBuilder)
ProcessGeneratedCode(CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod)

사용자 지정 컨트롤 작성기에서 생성된 CodeDom(코드 문서 개체 모델)에 액세스하고 컨트롤을 구문 분석 및 빌드하는 동안 코드를 삽입 및 수정할 수 있습니다.

(다음에서 상속됨 ControlBuilder)
SetResourceKey(String)

ControlBuilder 개체의 리소스 키를 설정합니다.

(다음에서 상속됨 ControlBuilder)
SetServiceProvider(IServiceProvider)

ControlBuilder 개체의 서비스 개체를 설정합니다.

(다음에서 상속됨 ControlBuilder)
SetTagInnerText(String)

ControlBuilder 컨트롤 태그의 내부 텍스트를 제공합니다.

(다음에서 상속됨 ControlBuilder)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상

추가 정보