Поделиться через


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 элемента управления, необходимо наследовать от этого класса.

Конструкторы

Имя Описание
HtmlSelectBuilder()

Инициализирует новый экземпляр класса HtmlSelectBuilder.

Свойства

Имя Описание
BindingContainerBuilder

Возвращает построитель элементов управления, соответствующий контейнеру привязки для элемента управления, который создает этот построитель.

(Унаследовано от ControlBuilder)
BindingContainerType

Возвращает тип контейнера привязки для создаваемого этим построителем элемента управления.

(Унаследовано от ControlBuilder)
ComplexPropertyEntries

Возвращает коллекцию сложных записей свойств.

(Унаследовано от ControlBuilder)
ControlType

Возвращает созданный Type элемент управления.

(Унаследовано от ControlBuilder)
CurrentFilterResolutionService

Возвращает объект, используемый IFilterResolutionService для управления службами, связанными с фильтром устройств, при анализе и сохранении элементов управления в конструкторе.

(Унаследовано от ControlBuilder)
DeclareType

Возвращает тип, который будет использоваться в создании кода для объявления элемента управления.

(Унаследовано от ControlBuilder)
FChildrenAsProperties

Получает значение, определяющее, имеет ли элемент управления значение с ChildrenAsProperties заданным ParseChildrenAttribute значением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)

Методы

Имя Описание
AllowWhitespaceLiterals()

Определяет, обрабатываются литералы пробелов в элементе HtmlSelect управления или игнорируются.

AppendLiteralString(String)

Добавляет указанное литеральное содержимое в элемент управления. Этот метод вызывается платформой страниц ASP.NET.

(Унаследовано от ControlBuilder)
AppendSubBuilder(ControlBuilder)

Добавляет построитель в ControlBuilder объект для всех дочерних элементов управления, принадлежащих элементу управления контейнера.

(Унаследовано от ControlBuilder)
BuildObject()

Создает экземпляр элемента управления во время разработки, который ссылается на этот ControlBuilder объект.

(Унаследовано от ControlBuilder)
CloseControl()

Вызывается средство синтаксического анализа, чтобы сообщить построителю, что анализ открывающих и закрывающих тегов элемента управления завершен.

(Унаследовано от ControlBuilder)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetChildControlType(String, IDictionary)

Получает дочерние TypeHtmlSelect элементы управления элемента управления.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetObjectPersistData()

ObjectPersistData Создает объект для этого ControlBuilder объекта.

(Унаследовано от ControlBuilder)
GetResourceKey()

Извлекает ключ ресурса для этого ControlBuilder объекта.

(Унаследовано от ControlBuilder)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
HasBody()

Определяет, имеет ли элемент управления открытый и закрывающий тег. Этот метод вызывается платформой страниц ASP.NET.

(Унаследовано от ControlBuilder)
HtmlDecodeLiterals()

Определяет, должна литеральная строка элемента управления 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)

Применяется к

См. также раздел