Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


PersistChildrenAttribute Klasa

Definicja

Definiuje atrybut używany przez ASP.NET kontrolek serwera w celu wskazania w czasie projektowania, czy zagnieżdżona zawartość zawarta w kontrolce serwera odpowiada kontrolkom lub właściwościom kontrolki serwera. Klasa ta nie może być dziedziczona.

[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class PersistChildrenAttribute : Attribute
Dziedziczenie
PersistChildrenAttribute
Atrybuty

Przykłady

Przykładowy kod w tej sekcji zawiera dwie części. W pierwszym przykładzie kodu pokazano, jak ustawić metadane kontrolki niestandardowej tak, aby w czasie projektowania jej zagnieżdżona zawartość została utrwalone jako właściwości kontrolki. W drugim przykładzie kodu pokazano, jak używać klas na stronie ASP.NET.

W poniższym przykładzie kodu pokazano, jak zastosować PersistChildrenAttribute atrybut, tak aby żadna z zagnieżdżonych kontrolek kontrolki niestandardowego serwera nie została utrwalone jako zagnieżdżone kontrolki. Niestandardowa kontrolka serwera o nazwie CollectionPropertyControl ma PersistChildrenAttribute atrybut ustawiony na false tak, aby Employee dodawane obiekty zostały utrwalone jako elementy zagnieżdżone.

using System;
using System.Collections;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Permissions;

namespace PersistChildrenSamples
{
   // 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 PersistChildren attribute to set the Persist
   // property to false so that none of this class's
   // child controls will be persisted as controls. They will
   // be persisted only as child elements of this class.
   // If you set the PersistChildren attribute to true, or if you
   // do not include this attribute when you create a control,
   // the child controls will be persisted as controls.   
   [PersistChildren(false)]
   [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 = Color.Beige;
         label.ForeColor = 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 = Color.Beige;
         table.ForeColor = 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);
      }
   }
}

W poniższym przykładzie kodu pokazano, jak używać CollectionPropertyControl klas i Employee na stronie ASP.NET.

<%@ Page Language="C#" %>
<%@ Register TagPrefix="AspSample" Assembly="Samples.AspNet.CS.Controls" Namespace="PersistChildrenSamples" %>

<!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)
  {

    // Create two new employees and add them to the custom control.
    Employee e1 = new Employee("Employee 1", "Title 1", "Alias 1");
    Employee e2 = new Employee("Employee 2", "Title 2", "Alias 2");
    CollectionPropertyControl1.Employees.Add(e1);
    CollectionPropertyControl1.Employees.Add(e2);

    // Verify attribute values.
    PersistChildrenAttribute p =
      (PersistChildrenAttribute)Attribute.GetCustomAttribute(typeof(CollectionPropertyControl), 
      typeof(PersistChildrenAttribute));

    StringBuilder sb = new StringBuilder();
    sb.Append("The Persist property is " + p.Persist.ToString() + "<br />");
    sb.Append("The UseCustomPersistence property is " + p.UsesCustomPersistence.ToString() + "<br />");
    sb.Append("The IsDefault method returns " + p.IsDefaultAttribute().ToString());
    Message.Text = sb.ToString();
    
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>PersistChildrenAttribute</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:Label ID="Message"
                 runat="server"/>
      <AspSample:CollectionPropertyControl id="CollectionPropertyControl1" 
                                           runat="server">
      </AspSample:CollectionPropertyControl>
    </div>
    </form>
</body>
</html>

Uwagi

Element PersistChildrenAttribute jest używany w połączeniu z elementem , ParseChildrenAttribute aby określić, jak zagnieżdżona zawartość kontrolki jest interpretowana. Jeśli PersistChildrenAttribute element to true i ParseChildrenAttribute to false, zagnieżdżona zawartość zawarta w kontrolce serwera ASP.NET jest utrwalana jako kontrolki. Jeśli PersistChildrenAttribute element to false i ParseChildrenAttribute ma truewartość , zagnieżdżona zawartość jest utrwalana jako właściwości kontrolki serwera. Aby uzyskać więcej informacji na temat używania atrybutów, zobacz Atrybuty.

Konstruktory

PersistChildrenAttribute(Boolean)

Inicjuje PersistChildrenAttribute nowe wystąpienie klasy przy użyciu wartości logicznej wskazującej, czy zawartość zagnieżdżona ma być utrwalana jako zagnieżdżone kontrolki.

PersistChildrenAttribute(Boolean, Boolean)

Inicjuje PersistChildrenAttribute nowe wystąpienie klasy przy użyciu dwóch wartości logicznych. Jeden wskazujący, czy zawartość zagnieżdżona ma być utrwalana jako zagnieżdżone kontrolki, a druga wskazująca, czy użyć niestandardowej metody trwałości.

Pola

Default

Wskazuje domyślny stan atrybutu. Pole Default jest tylko do odczytu.

No

Wskazuje, że zagnieżdżona zawartość nie powinna być utrwalana jako zagnieżdżone kontrolki w czasie projektowania. To pole jest tylko do odczytu.

Yes

Wskazuje, że zagnieżdżona zawartość powinna być utrwalana jako kontrolki w czasie projektowania. Pole Yes jest tylko do odczytu.

Właściwości

Persist

Pobiera wartość wskazującą, czy zagnieżdżona zawartość jest utrwalana jako zagnieżdżone kontrolki w czasie projektowania.

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu .

(Odziedziczone po Attribute)
UsesCustomPersistence

Pobiera wartość wskazującą, czy kontrolka serwera zapewnia niestandardową trwałość zagnieżdżonych kontrolek w czasie projektowania.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

GetHashCode()

Służy jako funkcja skrótu PersistChildrenAttribute dla klasy .

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsDefaultAttribute()

Zwraca wartość wskazującą, czy wartość bieżącego PersistChildrenAttribute wystąpienia klasy jest wartością domyślną klasy pochodnej.

Match(Object)

Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy

Zobacz też