Control.AddParsedSubObject(Object) 메서드

정의

XML 또는 HTML 요소가 구문 분석되었음을 서버 컨트롤에 알리고 서버 컨트롤의 ControlCollection 개체에 요소를 추가합니다.Notifies the server control that an element, either XML or HTML, was parsed, and adds the element to the server control's ControlCollection object.

protected:
 virtual void AddParsedSubObject(System::Object ^ obj);
protected virtual void AddParsedSubObject (object obj);
abstract member AddParsedSubObject : obj -> unit
override this.AddParsedSubObject : obj -> unit
Protected Overridable Sub AddParsedSubObject (obj As Object)

매개 변수

obj
Object

구문 분석한 요소를 나타내는 Object입니다.An Object that represents the parsed element.

구현

예제

다음 예제는 AddParsedSubObject 메서드를 사용 하 여이 컨트롤의 여는 태그와 닫는 태그 사이에 선언 된 요소가 TextBox 웹 서버 컨트롤 인지 확인 하는 사용자 지정 서버 컨트롤입니다.The following example is a custom server control that uses the AddParsedSubObject method to determine if elements declared between the opening and closing tags of this control are TextBox Web server controls. 이러한 경우 itemsArrayList 개체에 추가 됩니다.If they are, they are added to an ArrayList object, items. 재정의 된 CreateChildControls 메서드를 호출 하면 ArrayList 전체를 반복 하 여 사용자 지정 서버 컨트롤의 ControlCollection에 각 개체를 추가 합니다.When the overridden CreateChildControls method is called, it iterates through the ArrayList and adds each object in it to the ControlCollection of the custom server control.

중요

이 예제에는 사용자 입력을 허용하는 텍스트 상자가 있으므로 보안상 위험할 수 있습니다.This example has a text box that accepts user input, which is a potential security threat. 기본적으로 ASP.NET 웹 페이지는 사용자 입력 내용에 스크립트 또는 HTML 요소가 포함되어 있지 않은지 확인합니다.By default, ASP.NET Web pages validate that user input does not include script or HTML elements. 자세한 내용은 Script Exploits Overview를 참조하세요.For more information, see Script Exploits Overview.

// Custom ControlBuilder class. Interprets nested tag name "myitem" as a textbox. 
public class MyControlBuilder : ControlBuilder 
{
   public override Type GetChildControlType(String tagName,
                                       IDictionary attributes)
   {
      if (String.Compare(tagName, "myitem", true) == 0) 
      {
         return typeof(TextBox);
      }
      return null;
   }
}

[ 
ControlBuilderAttribute(typeof(MyControlBuilder)) 
]
public class MyControl : Control
{
   // Store all the controls specified as nested tags.
   private ArrayList items = new ArrayList();
   
   // This function is internally invoked by IParserAccessor.AddParsedSubObject(Object).
   protected override void AddParsedSubObject(Object obj) 
   {
      if (obj is TextBox) 
      {
         items.Add(obj);
      }
   }

   // Override 'CreateChildControls'. 
   protected override void CreateChildControls()
   {
      System.Collections.IEnumerator myEnumerator = items.GetEnumerator();
      while(myEnumerator.MoveNext())
          this.Controls.Add((TextBox)myEnumerator.Current);
   }
}    
' Custom ControlBuilder class. Interprets nested tag name "myitem" as a textbox.
Public Class MyControlBuilder
   Inherits ControlBuilder

   Public Overrides Function GetChildControlType(tagName As String, _
                             attributes As IDictionary) As Type
      If String.Compare(tagName, "myitem", True) = 0 Then
         Return GetType(TextBox)
      End If
      Return Nothing
   End Function
End Class

<ControlBuilderAttribute(GetType(MyControlBuilder))> Public Class MyControl
   Inherits Control
   ' Stores all the controls specified as nested tags.
   Private items As New ArrayList()

   ' This function is internally invoked by IParserAccessor.AddParsedSubObject(Object).
   Protected Overrides Sub AddParsedSubObject(obj As Object)
      If TypeOf obj Is TextBox Then
         items.Add(obj)
      End If
   End Sub

  ' Override 'CreateChildControls'.
   Protected Overrides Sub CreateChildControls()
      Dim myEnumerator As System.Collections.IEnumerator = items.GetEnumerator()
      While myEnumerator.MoveNext()
         Me.Controls.Add(CType(myEnumerator.Current, TextBox))
      End While
   End Sub
End Class

설명

재정의 하지 않는 한이 메서드는 LiteralControl 개체를 서버 컨트롤의 ControlCollection 개체에 자동으로 추가 합니다.Unless you override it, this method automatically adds LiteralControl objects to the server control's ControlCollection object. 이 컬렉션은 Control.Controls 속성을 통해 액세스할 수 있습니다.This collection is accessible through Control.Controls property.

적용 대상

추가 정보