Partilhar via


HtmlSelectBuilder Classe

Definição

Interage com o analisador para criar um controle 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
Herança
HtmlSelectBuilder

Exemplos

O exemplo de código a seguir demonstra como criar um controle personalizado HtmlSelectBuilder que define dois tipos de <option> elementos filho de um controle personalizado HtmlSelect e processa cada tipo de forma diferente.

<%@ 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

Comentários

O HtmlSelectBuilder controle interage com o analisador de páginas para criar um HtmlSelect controle. Use o HtmlSelectBuilder controle para personalizar a análise de um HtmlSelect controle.

A AllowWhitespaceLiterals propriedade é definida para false que o espaço em branco seja sempre ignorado. Use o GetChildControlType método para determinar o tipo de HtmlSelect controles filho do controle.

Notas aos Herdeiros

Para criar um construtor de controle personalizado para um HtmlSelect controle, você precisa herdar dessa classe.

Construtores

HtmlSelectBuilder()

Inicializa uma nova instância da classe HtmlSelectBuilder.

Propriedades

BindingContainerBuilder

Obtém o construtor de controle que corresponde ao contêiner de associação para o controle que esse construtor cria.

(Herdado de ControlBuilder)
BindingContainerType

Obtém o tipo do contêiner de associação para o controle que esse construtor cria.

(Herdado de ControlBuilder)
ComplexPropertyEntries

Obtém uma coleção de entradas de propriedade complexa.

(Herdado de ControlBuilder)
ControlType

Obtém o Type para o controle a ser criado.

(Herdado de ControlBuilder)
CurrentFilterResolutionService

Obtém um objeto IFilterResolutionService que é usado para gerenciar serviços relacionados ao filtro de dispositivo ao analisar e persistir controles no designer.

(Herdado de ControlBuilder)
DeclareType

Obtém o tipo que será usado pela geração de código para declarar o controle.

(Herdado de ControlBuilder)
FChildrenAsProperties

Obtém um valor que determina se o controle tem um ParseChildrenAttribute com ChildrenAsProperties definido como true.

(Herdado de ControlBuilder)
FIsNonParserAccessor

Obtém um valor que determina se o controle implementa a interface IParserAccessor.

(Herdado de ControlBuilder)
HasAspCode

Obtém um valor que indica se o controle contém algum bloco de código.

(Herdado de ControlBuilder)
ID

Obtém ou define a propriedade do identificador para o controle a ser criado.

(Herdado de ControlBuilder)
InDesigner

Retorna se o ControlBuilder está sendo executado no designer.

(Herdado de ControlBuilder)
InPageTheme

Obtém um valor booliano que indica se este objeto ControlBuilder é usado para gerar os temas de página.

(Herdado de ControlBuilder)
ItemType

Obtém o tipo definido no contêiner de associação.

(Herdado de ControlBuilder)
Localize

Obtém um valor booliano que indica se o controle criado por este objeto ControlBuilder está localizado.

(Herdado de ControlBuilder)
NamingContainerType

Obtém o tipo do contêiner de nomenclatura para o controle que esse construtor cria.

(Herdado de ControlBuilder)
PageVirtualPath

Obtém o caminho virtual de uma página a ser criada por esta instância ControlBuilder.

(Herdado de ControlBuilder)
Parser

Obtém o TemplateParser responsável por analisar o controle.

(Herdado de ControlBuilder)
ServiceProvider

Obtém o objeto de serviço para esse objeto ControlBuilder.

(Herdado de ControlBuilder)
SubBuilders

Obtém uma lista de objetos ControlBuilder filho para esse objeto ControlBuilder.

(Herdado de ControlBuilder)
TagName

Obtém o nome da marca para o controle a ser criado.

(Herdado de ControlBuilder)
TemplatePropertyEntries

Obtém uma coleção de entradas de propriedade de modelo.

(Herdado de ControlBuilder)
ThemeResolutionService

Obtém um objeto IThemeResolutionService que é usado no tempo de design para gerenciar os temas e capas do controle.

(Herdado de ControlBuilder)

Métodos

AllowWhitespaceLiterals()

Determina se os literais de espaço em branco em um controle HtmlSelect devem ser processados ou ignorados.

AppendLiteralString(String)

Adiciona o conteúdo literal especificado a um controle. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
AppendSubBuilder(ControlBuilder)

Adiciona construtores ao objeto ControlBuilder para quaisquer controles filho que pertençam ao controle de contêiner.

(Herdado de ControlBuilder)
BuildObject()

Cria uma instância de tempo de design do controle que é referenciado por esse objeto ControlBuilder.

(Herdado de ControlBuilder)
CloseControl()

Chamado pelo analisador para informar o construtor que a análise das marcas de abertura e fechamento do controle está concluída.

(Herdado de ControlBuilder)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetChildControlType(String, IDictionary)

Obtém o Type para os controles filho do controle HtmlSelect.

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetObjectPersistData()

Cria o objeto ObjectPersistData para este objeto ControlBuilder.

(Herdado de ControlBuilder)
GetResourceKey()

Recupera a chave de recurso para este objeto ControlBuilder.

(Herdado de ControlBuilder)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
HasBody()

Determina se um controle tem uma marca de abertura e de fechamento. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
HtmlDecodeLiterals()

Determina se a cadeia de caracteres literal de um controle HTML deve ser decodificada para HTML. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
Init(TemplateParser, ControlBuilder, Type, String, String, IDictionary)

Inicializa o ControlBuilder para uso após ele ser instanciado. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
NeedsTagInnerText()

Determina se o construtor de controle precisa obter seu texto interno. Se sim, o método SetTagInnerText(String) deve ser chamado. Esse método é chamado pela estrutura de página ASP.NET.

(Herdado de ControlBuilder)
OnAppendToParentBuilder(ControlBuilder)

Notifica o ControlBuilder que está sendo adicionado a um construtor de controle pai.

(Herdado de ControlBuilder)
ProcessGeneratedCode(CodeCompileUnit, CodeTypeDeclaration, CodeTypeDeclaration, CodeMemberMethod, CodeMemberMethod)

Permite que os criadores de controle personalizado acessem o CodeDom (Modelo de Objeto do Documento de Código) gerado e insiram e modifiquem o código durante o processo de análise e criação de controles.

(Herdado de ControlBuilder)
SetResourceKey(String)

Define a chave de recurso para este objeto ControlBuilder.

(Herdado de ControlBuilder)
SetServiceProvider(IServiceProvider)

Define o objeto de serviço para esse objeto ControlBuilder.

(Herdado de ControlBuilder)
SetTagInnerText(String)

Fornece o ControlBuilder com o texto interno da marca do controle.

(Herdado de ControlBuilder)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também