İngilizce dilinde oku

Aracılığıyla paylaş


ParseChildrenAttribute Sınıf

Tanım

ASP.NET sunucu denetimleri geliştirirken kullanabileceğiniz bir meta veri özniteliği tanımlar. ParseChildrenAttribute Sayfa ayrıştırıcısının bir sayfada bildirilen bir sunucu denetim etiketi içinde iç içe yerleştirilmiş içeriği nasıl ele alması gerektiğini belirtmek için sınıfını kullanın. Bu sınıf devralınamaz.

C#
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class ParseChildrenAttribute : Attribute
Devralma
ParseChildrenAttribute
Öznitelikler

Örnekler

Bu bölümdeki kod örneği iki bölümden oluşur. İlk kod örneği, sınıfı için ParseChildrenAttribute özelliklerin nasıl ayarlandığını gösterir. İkinci kod örneği, sınıfların bir ASP.NET sayfasında nasıl kullanılacağını gösterir.

Aşağıdaki kod örneğinde adlı CollectionPropertyControlözel bir sunucu denetiminin nesnesinin nasıl ayarlanacağı ParseChildrenAttribute gösterilmektedir. , ParseChildrenAttribute özelliğini olarak, özelliğini true ise DefaultProperty sınıfına Employee ayarlarChildrenAsProperties.

C#
using System;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Permissions;

namespace Samples.AspNet.CS.Controls
{
   // The child element class.
   [AspNetHostingPermission(SecurityAction.Demand, 
      Level=AspNetHostingPermissionLevel.Minimal)]
   public sealed class Employee
   {
      private String name;
      private String title;
      private String alias;

      public Employee():this ("","",""){}
      
      public Employee (String name, String title, String alias)
      {
         this.name = name;
         this.title = title;
         this.alias = alias;
      }
      public String Name
      {
         get
         {
            return name;
         }
         set
         {
            name = value;
         }
      }
      
      public String Title
      {
         get
         {
            return title;
         }
         set
         {
            title = value;
         }
      }
      
      public String Alias
      {
         get
         {
            return alias;
         }
         set
         {
            alias = value;
         }
      }
   }
   // Use the ParseChildren attribute to set the ChildrenAsProperties
   // and DefaultProperty properties. Using this constructor, the
   // control parses all child controls as properties and must define
   // a public property named Employees, which it declares as
   // an ArrayList. Nested (child) elements must correspond to
   // child elements of the Employees property or to other
   // properties of the control.  
   [ParseChildren(true, "Employees")]
   [AspNetHostingPermission(SecurityAction.Demand, 
      Level=AspNetHostingPermissionLevel.Minimal)]
   public sealed class CollectionPropertyControl : Control
   {  
      private String header;
      private ArrayList employees = new ArrayList();
      
      public String Header
      {
         get
         {
            return header;
         }
         set
         {
            header = value;
         }
      }

      public ArrayList Employees
      {
         get 
         {
            return employees;
         }
      }
      // Override the CreateChildControls method to 
      // add child controls to the Employees property when this
      // custom control is requested from a page.
      protected override void CreateChildControls()
      {
         Label label = new Label();
         label.Text = Header;
         label.BackColor = System.Drawing.Color.Beige;
         label.ForeColor = System.Drawing.Color.Red;
         Controls.Add(label);
         Controls.Add(new LiteralControl("<BR> <BR>"));

         Table table = new Table();
         TableRow htr = new TableRow();

         TableHeaderCell hcell1 = new TableHeaderCell();    
         hcell1.Text = "Name";
         htr.Cells.Add(hcell1);

         TableHeaderCell hcell2 = new TableHeaderCell();
         hcell2.Text = "Title";
         htr.Cells.Add(hcell2);
         
         TableHeaderCell hcell3 = new TableHeaderCell();
         hcell3.Text = "Alias";
         htr.Cells.Add(hcell3);
         table.Rows.Add(htr);

         table.BorderWidth = 2;
         table.BackColor = System.Drawing.Color.Beige;
         table.ForeColor = System.Drawing.Color.Red;
         foreach (Employee employee in Employees)
         {
            TableRow tr = new TableRow();

            TableCell cell1 = new TableCell();
            cell1.Text = employee.Name;
            tr.Cells.Add(cell1);
            
            TableCell cell2 = new TableCell();
            cell2.Text = employee.Title;
            tr.Cells.Add(cell2);
            
            TableCell cell3 = new TableCell();
            cell3.Text = employee.Alias;
            tr.Cells.Add(cell3);
            
            table.Rows.Add(tr);
         }
         Controls.Add(table);
      }
   }
}

Aşağıdaki kod örneği, ve Employee sınıflarının bir ASP.NET sayfasında nasıl kullanılacağını CollectionPropertyControl gösterir. sınıfının örnekleri Employee bildirim temelli olarak eklenir.

ASP.NET (C#)
<%@ Page Language="C#" Debug="true" %>
<%@ Register TagPrefix="AspSample" Assembly="Samples.AspNet.CS.Controls" Namespace="Samples.AspNet.CS.Controls" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  protected void Page_Load(object sender, EventArgs e)
  {
    
    // Verify attribute values.
    ParseChildrenAttribute p = 
      (ParseChildrenAttribute)Attribute.GetCustomAttribute(typeof(CollectionPropertyControl),
      typeof(ParseChildrenAttribute));

    StringBuilder sb = new StringBuilder();
    sb.Append("The DefaultProperty property is " + p.DefaultProperty.ToString() + "<br />");
    sb.Append("The ChildrenAsProperties property is " + p.ChildrenAsProperties.ToString() + "<br />");
    sb.Append("The IsDefaultAttribute method returns " + p.IsDefaultAttribute().ToString());
    Message.Text = sb.ToString();

  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ParseChildrenAttribute Example</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label ID="Message"
                 runat="server"/>
      <AspSample:CollectionPropertyControl id="CollectionPropertyControl1" 
                                           runat="server">
        <AspSample:Employee Name="Employee 1" 
                            Title="Title 1" 
                            Alias="Alias 1" />
        <AspSample:Employee Name="Employee 2" 
                            Title="Title 2" 
                            Alias="Alias 2" />
      </AspSample:CollectionPropertyControl>    
    </div>
    </form>
</body>
</html>

Açıklamalar

sınıfı, ParseChildrenAttribute sunucu denetimini meta veri özniteliğiyle işaretleyerek özel bir sunucu denetimi için ayrıştırma mantığı belirtmenize ParseChildrenAttribute olanak tanır.

Sunucu denetiminizi metadata özniteliğiyle ParseChildren(true) işaretlemek, ayrıştırıcıya sunucu denetiminin etiketlerinde bulunan öğeleri özellik olarak yorumlamasını bildirir. Bu senaryoda özelliği ChildrenAsProperties şeklindedir true.

Sunucu denetiminizi metadata özniteliğiyle ParseChildren(true,"<Default Property>") işaretleme özelliği, özniteliğine geçirilen özelliğin adına ayarlar DefaultProperty .

Sunucu denetiminizi varsayılan değer olan metadata özniteliğiyle ParseChildren(false)işaretlemek, ayrıştırıcıya sunucu denetiminin etiketleri içinde yer alan öğeleri, denetimler olarak ilişkili ControlBuilder bir içerikle ayrıştırılacak içerik olarak yorumlamasını bildirir. Bu senaryoda özelliği ChildrenAsProperties şeklindedir false.

Öznitelikleri kullanma hakkında bilgi için bkz . Öznitelikler.

Oluşturucular

ParseChildrenAttribute()

ParseChildrenAttribute sınıfının yeni bir örneğini başlatır.

ParseChildrenAttribute(Boolean)

Bir sunucu denetiminde yer alan öğelerin sunucu denetiminin özellikleri olarak ayrıştırılıp ayrıştırılamadığını belirlemek için özelliğini kullanarak ChildrenAsProperties sınıfının yeni bir örneğini ParseChildrenAttribute başlatır.

ParseChildrenAttribute(Boolean, String)

ve defaultProperty parametrelerini kullanarak sınıfının yeni bir örneğini ParseChildrenAttribute childrenAsProperties başlatır.

ParseChildrenAttribute(Type)

Bir sunucu denetiminde ParseChildrenAttribute yer alan öğelerin denetim olarak ayrıştırıldığını belirlemek için özelliğini kullanarak ChildControlType sınıfının yeni bir örneğini başlatır.

Alanlar

Default

sınıfı için ParseChildrenAttribute varsayılan değeri tanımlar. Bu alan salt okunur durumdadır.

ParseAsChildren

Sunucu denetiminde bulunan iç içe içeriğin denetimler olarak ayrıştırıldığını gösterir.

ParseAsProperties

Bir sunucu denetiminde bulunan iç içe içeriğin denetimin özellikleri olarak ayrıştırıldığını gösterir.

Özellikler

ChildControlType

Denetimin izin verilen türünü belirten bir değer alır.

ChildrenAsProperties

Sunucu denetiminde bulunan öğelerin özellik olarak ayrıştırılıp ayrıştırılmayacağını belirten bir değer alır veya ayarlar.

DefaultProperty

Öğelerin ayrıştırıldığı sunucu denetiminin varsayılan özelliğini alır veya ayarlar.

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

GetHashCode()

Nesnesi için karma işlevi görür ParseChildrenAttribute .

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Sınıfın geçerli örneğinin ParseChildrenAttribute değerinin türetilen sınıfın varsayılan değeri olup olmadığını belirten bir değer döndürür.

Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Belirtik Arabirim Kullanımları

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır.

(Devralındığı yer: Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1).

(Devralındığı yer: Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar.

(Devralındığı yer: Attribute)

Şunlara uygulanır

Ürün Sürümler
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Ayrıca bkz.