HtmlSelectBuilder Classe

Definição

Interage com o parser para construir um HtmlSelect controlo.

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 seguinte demonstra como criar um controlo personalizado HtmlSelectBuilder que define dois tipos de <option> elementos filhos de um controlo personalizado HtmlSelect e depois 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

Observações

O HtmlSelectBuilder controlo interage com o parser de páginas para construir um HtmlSelect controlo. Usa o HtmlSelectBuilder controlo para personalizar a análise de um HtmlSelect controlo.

A AllowWhitespaceLiterals() propriedade está definida para false que o espaço em branco seja sempre ignorado. Use o GetChildControlType método para determinar o tipo de HtmlSelect controlos filhos do controlo.

Notas para Herdeiros

Para criar um construtor de controlos personalizado para um HtmlSelect controlo, tens de herdar desta classe.

Construtores

Name Description
HtmlSelectBuilder()

Inicializa uma nova instância da HtmlSelectBuilder classe.

Propriedades

Name Description
BindingContainerBuilder

Obtém o construtor de controlos que corresponde ao contentor de ligação para o controlo que este construtor cria.

(Herdado de ControlBuilder)
BindingContainerType

Obtém o tipo de recipiente de ligação para o controlo que este construtor cria.

(Herdado de ControlBuilder)
ComplexPropertyEntries

Recebe uma coleção de entradas complexas de propriedades.

(Herdado de ControlBuilder)
ControlType

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

(Herdado de ControlBuilder)
CurrentFilterResolutionService

Obtém um IFilterResolutionService objeto que é usado para gerir serviços relacionados com filtros de dispositivo ao analisar e persistir controlos no designer.

(Herdado de ControlBuilder)
DeclareType

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

(Herdado de ControlBuilder)
FChildrenAsProperties

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

(Herdado de ControlBuilder)
FIsNonParserAccessor

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

(Herdado de ControlBuilder)
HasAspCode

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

(Herdado de ControlBuilder)
ID

Obtém ou define a propriedade de identificador para o controlo a ser construído.

(Herdado de ControlBuilder)
InDesigner

Devolve se o ControlBuilder está a correr no designer.

(Herdado de ControlBuilder)
InPageTheme

Recebe um valor booleano que indica se este ControlBuilder objeto é usado para gerar temas de página.

(Herdado de ControlBuilder)
ItemType

Define o tipo no recipiente de ligação.

(Herdado de ControlBuilder)
Localize

Recebe um valor booleano que indica se o controlo criado por este ControlBuilder objeto é localizado.

(Herdado de ControlBuilder)
NamingContainerType

Obtém o tipo de contentor de nomes para o controlo que este construtor cria.

(Herdado de ControlBuilder)
PageVirtualPath

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

(Herdado de ControlBuilder)
Parser

Fica responsável TemplateParser por analisar o controlo.

(Herdado de ControlBuilder)
ServiceProvider

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

(Herdado de ControlBuilder)
SubBuilders

Obtém uma lista de objetos filhos ControlBuilder para este ControlBuilder objeto.

(Herdado de ControlBuilder)
TagName

Recebe o nome da etiqueta para o controlo a ser construído.

(Herdado de ControlBuilder)
TemplatePropertyEntries

Recebe uma coleção de entradas de propriedades modelo.

(Herdado de ControlBuilder)
ThemeResolutionService

Obtém um IThemeResolutionService objeto que é usado no tempo de design para gerir temas de controlo e skins.

(Herdado de ControlBuilder)

Métodos

Name Description
AllowWhitespaceLiterals()

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

AppendLiteralString(String)

Adiciona o conteúdo literal especificado a um controlo. Este método é chamado pelo framework de páginas ASP.NET.

(Herdado de ControlBuilder)
AppendSubBuilder(ControlBuilder)

Adiciona construtores ao ControlBuilder objeto para quaisquer controlos filhos que pertençam ao controlo do contentor.

(Herdado de ControlBuilder)
BuildObject()

Constrói uma instância em tempo de projeto do controlo a que este objeto refere ControlBuilder .

(Herdado de ControlBuilder)
CloseControl()

Chamado pelo parser para informar o construtor que a análise das etiquetas de abertura e fecho do controlo 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-se para Type os HtmlSelect controlos filhos do controlo.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetObjectPersistData()

Cria o ObjectPersistData objeto para esse ControlBuilder objeto.

(Herdado de ControlBuilder)
GetResourceKey()

Recupera a chave de recurso para este ControlBuilder objeto.

(Herdado de ControlBuilder)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
HasBody()

Determina se um controlo tem tanto uma etiqueta de abertura como de fecho. Este método é chamado pelo framework de páginas ASP.NET.

(Herdado de ControlBuilder)
HtmlDecodeLiterals()

Determina se a cadeia literal de um controlo HTML deve ser decodificada por HTML. Este método é chamado pelo framework de páginas ASP.NET.

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

Inicializa o ControlBuilder para uso após ser instanciado. Este método é chamado pelo framework de páginas ASP.NET.

(Herdado de ControlBuilder)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
NeedsTagInnerText()

Determina se o construtor de controlos precisa de obter o seu texto interno. Se sim, o SetTagInnerText(String) método deve ser chamado. Este método é chamado pelo framework de páginas ASP.NET.

(Herdado de ControlBuilder)
OnAppendToParentBuilder(ControlBuilder)

Notifica que ControlBuilder está a ser adicionado a um gestor de controlo parental.

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

Permite que construtores de controlos personalizados acedam ao Code Document Object Model (CodeDom) gerado e insiram e modifiquem código durante o processo de análise e construção de controlos.

(Herdado de ControlBuilder)
SetResourceKey(String)

Define a chave de recurso para este ControlBuilder objeto.

(Herdado de ControlBuilder)
SetServiceProvider(IServiceProvider)

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

(Herdado de ControlBuilder)
SetTagInnerText(String)

Fornece o ControlBuilder texto interno da etiqueta de controlo.

(Herdado de ControlBuilder)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também