Überblick über Benutzersteuerelemente und benutzerdefinierte Steuerelemente

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 893667 - Produkte anzeigen, auf die sich dieser Artikel bezieht
ASP.NET Support Voice-Kolumne

Überblick über Benutzersteuerelemente und benutzerdefinierte Steuerelemente

diese Kolumne an Ihre Bedürfnisse anpassen wir möchten Sie Ihre Ideen zu den Themen zu senden, die Sie interessieren einladen möchten, und behandelt Probleme, die Sie anzeigen möchten, in zukünftigen Knowledge Base-Artikeln und Support Voice-Kolumnen. Sie können Ihre Ideen und ihr Feedback über das Formular Ask For It senden. Es gibt auch eine Verknüpfung zu dem Formular am unteren Rand dieser Spalte.
Alles erweitern | Alles schließen

Auf dieser Seite

Einführung

Hallo! Dies ist Parag, und ich einen Supportmitarbeiter, die Microsoft ASP.NET Support für mehr als ein Jahr jetzt arbeiten. Vor war Microsoft ich auf webbasierte Projekte und desktop-Anwendungen mithilfe von Microsoft-Technologien. Während Qualität Unterstützung für Kunden bereitstellen, haben ich Fällen gesehen, wobei gab es einige Verwirrung um benutzerdefinierte Steuerelemente und ich möchte nur um einige Sachverhalte um benutzerdefinierte Steuerelemente einige Zeit dauern. Als fehlerhaft als aussieht, glauben mich, sobald Sie hängt davon erhalten, werden in einer besseren Position zu ASP.NET zu schätzen wissen.

(Übersicht)

Im Artikel dieses Monats werde ich die folgenden Themen:
  • Was sind Steuerelemente?
  • Was sind benutzerdefinierte Steuerelemente?
  • Was sind die grundlegenden Unterschiede zwischen Benutzersteuerelementen und benutzerdefinierten Steuerelementen?
Ich vorgestellt auch ein paar der erweiterten Themen, die benutzerdefinierten Steuerelemente, wie Statusverwaltung und die Darstellung der benutzerdefinierten Steuerelemente betreffen.

Was sind Steuerelemente?

Benutzersteuerelemente sind benutzerdefinierte, wiederverwendbare Steuerelemente, und Sie verwenden dieselben Verfahren, die von HTML- und Serversteuerelementen eingesetzt werden. Sie bieten eine einfache Möglichkeit, partitionieren und allgemeine Benutzeroberflächen in ASP.NET-Anwendungen wiederverwenden. Sie verwenden dasselbe Webformulare Programmiermodell auf dem Web Forms-Seite funktioniert. Weitere Informationen über Web Forms-Programmiermodell finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Websites:
Einführung in Web Forms-Seiten
http://msdn2.microsoft.com/en-us/library/65tcbxz3(vs.71).aspx

Web Forms-Codemodell
http://msdn2.microsoft.com/en-us/library/015103yb(vs.71).aspx

Wie Sie eine Benutzersteuerelement erstellen

Die Syntax die Sie ein Benutzersteuerelement erstellen ähnelt der Syntax, Sie erstellen eine Web Forms-Seite (.aspx). Der einzige Unterschied besteht darin, dass ein Benutzersteuerelement nicht die <html> aufgeführt ist, <body> und <form> Elemente, da eine Web Forms-Seite das Benutzersteuerelement hostet. So erstellen Sie ein Benutzersteuerelement:
  1. Öffnen Sie einem Text oder HTML-Editor, und erstellen Sie einen serverseitigen Codeblock, der alle Eigenschaften, Methoden und Ereignisse verfügbar machen.
    <script language="C#" runat="server">
       public void button1_Click(object sender, EventArgs e)
       {
          label1.Text = "Hello World!!!";
       }
    </script>
    
  2. Erstellen Sie eine Benutzeroberfläche für das Benutzersteuerelement.
    <asp:Label id="label1" runat="server"/>
     <br><br>
    <asp:button id="button1" text="Hit" OnClick="button1_Click" runat="server" />
    

Wie Sie ein Benutzersteuerelement in einer Web Forms-Seite verwenden

  1. Erstellen Sie eine neue Web Forms-Seite (.aspx) in Microsoft Visual Studio .NET 2002, Microsoft Visual Studio .NET 2003, Microsoft Visual Studio 2005 oder einem beliebigen Text-Editor.
  2. Deklarieren Sie die @ Register -Direktive. Verwenden Sie beispielsweise den folgenden Code.
    <%@ Register TagPrefix="UC" TagName="TestControl" Src="test.ascx" %>
    Hinweis angenommen, die das Benutzersteuerelement und die Web Forms-Seite in demselben Speicherort sind.
  3. Das Benutzersteuerelement in der Web Forms-Seite verwenden möchten, verwenden Sie den folgenden Code nach der @ Register -Direktive.
    <html>
        <body>
              <form runat="server">
                   <UC:TestControl id="Test1" runat="server"/>
              </form>
        </body>  
    </html>
    

Wie Sie eine Instanz eines Benutzersteuerelements programmgesteuert in die CodeBehind-Datei eines Web Forms-Seite erstellen

Im vorherige Beispiel instanziiert ein Benutzersteuerelement deklarativ in einer Web Forms-Seite mithilfe der @ Register -Direktive. Sie können jedoch ein Benutzersteuerelement dynamisch zu instanziieren und zur Seite hinzufügen. Hier sind die Schritte, die dafür:
  1. Erstellen Sie eine neue Web Forms-Seite in Visual Studio.
  2. Navigieren Sie zu der CodeBehind-Datei für dieses Web Forms-Seite generiert.
  3. Im Page_Load -Ereignis der Page -Klasse laden schreiben die folgenden code.
    // Load the control by calling LoadControl on the page class.
    Control c1 = LoadControl("test.ascx");
                
    // Add the loaded control in the page controls collection.	
    Page.Controls.Add(c1);
    
    Notiz Sie ein Benutzersteuerelement dynamisch an bestimmte Ereignisse im Lebenszyklus der Seite hinzufügen können.

    Weitere Informationen finden Sie auf folgenden Websites:
    Steuerelemente einer Web Forms-Seite programmgesteuert hinzufügen
    http://msdn2.microsoft.com/en-us/library/kyt0fzt1(vs.71).aspx

    Steuerelement Ausführung Lebenszyklus
    http://msdn2.microsoft.com/en-us/library/aa719775(vs.71).aspx

    Dynamische Web-Steuerelemente, Postbacks und Ansichtszustand von Scott Mitchell
    http://aspnet.4guysfromrolla.com/articles/092904-1.aspx

Wie ein Benutzersteuerelement verarbeitet wird

Wenn eine Seite mit einem Steuerelement angefordert wird, geschieht Folgendes:
  • Der Seitenparser in das Src -Attribut in der @ Register -Direktive angegebene ASCX-Datei analysiert und generiert eine Klasse, die von der Klasse System.Web.UI.UserControl abgeleitet wird.
  • Der Parser kompiliert dann dynamisch die Klasse in eine Assembly.
  • Wenn Sie Visual Studio verwenden, Visual Studio erstellt dann nur zur Entwurfszeit, eine CodeBehind-Datei für das Benutzersteuerelement und die Datei wird vom Designer selbst vorkompiliert.
  • Schließlich verfügt die Klasse für das Benutzersteuerelement, das durch die dynamische Codegenerierung und die Kompilierung generiert wird den Code für die CodeBehind-Datei (. ascx.cs) als auch der Code innerhalb der ASCX-Datei geschrieben.

Was sind benutzerdefinierte Steuerelemente?

Benutzerdefinierte Steuerelemente sind kompilierten Codekomponenten, die auf dem Server ausgeführt, das Objektmodell verfügbar zu machen und Markup-Text, wie z.B. HTML- oder XML, rendern, wie einer normalen Web Form oder eines Benutzersteuerelements.

Wie Sie die Basisklasse für das benutzerdefinierte Steuerelement auswählen

Um ein benutzerdefiniertes Steuerelement zu schreiben, sollten Sie direkt oder indirekt die neue Klasse von der System.Web.UI.Control -Klasse oder von der System.Web.UI.WebControls.WebControl -Klasse ableiten:
  • Sie sollte von System.Web.UI.Control abgeleitet werden, wenn das Steuerelement nicht visuelle Elemente gerendert werden soll. Beispielsweise <meta> und <head> sind Beispiele für nicht visuelle Darstellung.
  • Sie sollten von System.Web.UI.WebControls.WebControl ableiten, wenn das Steuerelement HTML zu rendern, das eine grafische Benutzeroberfläche auf dem Clientcomputer generiert werden soll.
Wenn Sie die Funktionalität von vorhandenen Steuerelementen, z. B. eine Schaltfläche oder Beschriftung ändern möchten, Sie können direkt mit diesen vorhandenen Klassen die neue Klasse ableiten und können Ihre Standardverhalten ändern.

Kurz gesagt, stellt der Steuerelementklasse die grundlegende Funktionalität mit der Sie Sie in die Steuerelementstruktur einer Seitenklasse ablegen können bereit. WebControl -Klasse bietet der Basisklasse Control zum Anzeigen von visuelle Inhalte auf dem Clientcomputer die zusätzlichen Funktionen. WebControl -Klasse können Sie um die Darstellung und Formatvorlagen über Eigenschaften wie Schriftart, Farbe und Höhe zu steuern.

Zum Erstellen und verwenden ein einfaches benutzerdefiniertes Steuerelement, das von System.Web.UI.Control erweitert mithilfe von Visual Studio

  1. Starten Sie Visual Studio.
  2. Erstellen Sie ein Klasse-Bibliothek-Projekt, und geben Sie einen Namen, z. B. CustomServerControlsLib.
  3. Fügen Sie eine Quelldatei zum Projekt, z. B. SimpleServerControl.cs.
  4. Enthalten Sie den Verweis des System.Web -Namespace im Abschnitt Verweise.
  5. Überprüfen Sie, ob die folgenden Namespaces in der SimpleServerControl.cs Datei.
    System
    System.Collections
    System.ComponentModel
    System.Data
    System.Web
    System.Web.SessionState
    System.Web.UI
    System.Web.UI.WebControls
    
    eingeschlossen sind.
  6. Erben Sie die SimpleServerControls -Klasse mit der Control -Basisklasse.
    public class SimpleServerControl : Control
  7. Überschreiben Sie die Render -Methode, die Ausgabe in den Ausgabestream geschrieben.
    protected override void Render(HtmlTextWriter writer) 
    {
    	 writer.Write("Hello World from custom control");
    }
    
    Hinweis: Die Klasse HtmlTextWriter hat die Funktionalität von HTML in einen Textstream schreiben. Die Write -Methode der HtmlTextWriter -Klasse den angegebenen Text an den HTTP-Antwortstream ausgegeben und ist die Response.Write -Methode identisch.
  8. Kompilieren Sie das Klasse-Bibliothek-Projekt. Es wird die DLL-Ausgabe generiert.
  9. Öffnen Sie einer vorhandenen oder erstellen Sie ein neues ASP.NET-Webanwendungsprojekt.
  10. Fügen Sie eine Web Forms-Seite, in denen das benutzerdefinierte Steuerelement verwendet werden kann.
  11. Fügen Sie in der das ASP.NET-Projekt im Abschnitt Verweise einen Verweis auf die Bibliothek-Klasse hinzu.
  12. Registrieren Sie das benutzerdefinierte Steuerelement auf der Web Forms-Seite.
    <%@ Register TagPrefix="CC " Namespace=" CustomServerControlsLib " Assembly="CustomServerControlsLib " %>
  13. Fügen Sie instanziieren, oder verwenden Sie das benutzerdefinierte Steuerelement auf der Web Forms-Seite, die folgende Zeile des Codes in den Tags <form>.
    <form id="Form1" method="post" runat="server">
        <CC:SimpleServerControl id="ctlSimpleControl" runat="server">
        </CC:SimpleServerControl >
    </form>
    
    Hinweis in diesem Code SimpleServerControl ist der Steuerelement-Klassenname innerhalb der Bibliothek-Klasse.
  14. Führen Sie die Web Forms-Seite, und sehen Sie die Ausgabe des benutzerdefinierten Steuerelements.
Wenn Sie Visual Studio nicht verwenden, müssen Sie die folgenden Schritte ausführen:
  1. Öffnen Sie alle Text-Editor.
  2. Erstellen Sie eine Datei namens SimpleServerControl.cs, und Schreiben Sie Code wie in den Schritten 1 bis 14 angegeben.
  3. Fügen Sie in der Variable PATH den folgenden Pfad:
    c:\Windows (winnt)\Microsoft.Net\Framework\v1.1.4322
  4. Starten Sie eine Eingabeaufforderung, und wechseln Sie zu der Speicherort, in dem SimpleServerControl.cs vorhanden ist.
  5. Führen Sie den folgenden Befehl aus:
    csc-/t:library /out: CustomServerControlsLib. SimpleServerControl.dll/r: System.dll/d: /r:System.Web.dll SimpleServerControl.cs
    Weitere Informationen zu den C#-Compiler (csc.exe) der folgenden MSDN-Website:
    http://msdn2.microsoft.com/en-us/library/1700bbwd(vs.71).aspx
  6. Zum Ausführen des benutzerdefinierten Steuerelements auf der Web Forms-Seite folgendermaßen Sie vor:
    1. Erstellt ein Verzeichnis unter dem Ordner Wwwroot.
    2. Starten Sie Internetinformationsdienste (IIS) Manager, und markieren Sie das neue Verzeichnis als virtuelles Stammverzeichnis.
    3. Erstellen Sie einen Bin-Ordner unter dem neuen Verzeichnis.
    4. Kopieren Sie das benutzerdefinierte Steuerelement-DLL in den Ordner Bin.
    5. Platzieren Sie die Beispiel Web Forms-Seite, die Sie in den vorherigen Schritten in das neue Verzeichnis erstellt haben.
    6. Führen Sie die Beispielseite über IIS-Manager.
Nun, da Sie ein einfaches benutzerdefiniertes Steuerelement erstellt haben, sehen wir uns zum Offenlegen von Eigenschaften und Entwurfszeitattribute auf das benutzerdefinierte Steuerelement anwenden.

Wie Eigenschaften für das benutzerdefinierte Steuerelement verfügbar gemacht.

Ich bauen auf dem vorherigen Beispiel und führen eine oder mehrere Eigenschaften, die während der Verwendung des benutzerdefinierten Steuerelement auf der Web Forms-Seite konfiguriert werden können.

Das folgende Beispiel veranschaulicht eine Eigenschaft definieren, die eine Nachricht von dem Steuerelement eine bestimmte Anzahl von Wiederholungen, wie in der Eigenschaft des Steuerelements angegeben:
  1. Öffnen Sie SimpleServerControl.cs in einem Texteditor.
  2. Hinzufügen einer Eigenschaft in der SimpleServerControl -Klasse.
    public class SimpleServerControl : Control
    {
       private int noOfTimes;
       public int NoOfTimes
       {
           get { return this.noOfTimes; }
           set { this.noOfTimes = value; }
       } 
       protected override void Render (HtmlTextWriter writer)
       {
         for (int i=0; i< NoOfTimes; i++)
         {
           write.Write("Hello World.."+"<BR>");
         } 
       }
    }
    
  3. Kompilieren Sie das benutzerdefinierte Steuerelement.
  4. Das benutzerdefinierte Steuerelement auf der Web Forms-Seite verwenden, die Steuerelementdeklaration fügen Sie die neue Eigenschaft hinzu.
    <CC:SimpleServerControl id="ctlSimpleControl" NoOfTimes="5" runat="server"></CC:SimpleServerControl>
  5. Ausführen der Seite zeigt die Meldung "Hello World" aus dem benutzerdefinierten Steuerelement so oft als in der Eigenschaft des Steuerelements angegeben.

Entwurfszeitattribute für das benutzerdefinierte Steuerelement anwenden

Warum Entwurfszeitattribute erforderlich
Das benutzerdefinierte Steuerelement, das im vorherigen Beispiel erstellt funktioniert wie erwartet. Jedoch, wenn Sie das Steuerelement in Visual Studio verwenden möchten, sollten Sie die NoOfTimes -Eigenschaft im Eigenschaftenfenster automatisch markiert werden, wenn das benutzerdefinierte Steuerelement zur Entwurfszeit ausgewählt wird.

Um dies geschehen, müssen Sie die Metadateninformationen zu Visual Studio bereitstellen, mithilfe einer Funktion in Visual Studio als Attribute bezeichnet. Attribute können eine Klasse, eine Methode, eine Eigenschaft oder ein Feld definieren. Wenn Visual Studio benutzerdefinierte Steuerelementklasse lädt, alle Attribute auf die Klasse, Methode, Eigenschaft oder Feldebene definiert prüft und ändert das Verhalten des benutzerdefinierten Steuerelements zur Entwurfszeit entsprechend.

Weitere Informationen über Attribute finden die folgenden MSDN-Website:
http://msdn2.microsoft.com/en-us/library/Aa288059(VS.71).aspx
Ein Beispiel erstellen wir die Attribute verwendet häufig:
  1. Öffnen Sie SimpleServerControl.cs in einem Texteditor.
  2. Stellen Sie einige grundlegende Attribute auf Klassenebene, z. B. DefaultProperty , ToolboxData und TagPrefixAttrbute . Erstellen wir unser Beispiel für diese drei Attribute.
            [
    	// Specify the default property for the control.		
    	DefaultProperty("DefaultProperty"),
    	
    	// Specify the tag that is written to the aspx page when the
            // control is dragged from the Toolbox to the Design view. 
    	// However this tag is optional since the designer automatically 
    	// generates the default tag if it is not specified.		
    	ToolboxData("<{0}:ControlWithAttributes runat=\"server\">" +
    		"</{0}:ControlWithAttributes>")
    	]
    	public class ControlWithAttributes : Control
    	{
    		private string _defaultProperty;
    		public string DefaultProperty
    		{
    			get { return "This is a default property value"; }
    			set { this._defaultProperty = value; }
    		}
    
    		protected override void Render(HtmlTextWriter writer)
    		{
    			writer.Write("Default Property --> <B>" + 
    			DefaultProperty + "</B>");
    		}
             }
    
  3. Es ist eine weitere Tag TagPrefixAttrbute aufgerufen. Es ist ein Attribut auf Assemblyebene, das ein Präfix zu einem Tag, bereitstellt Wenn Sie das Steuerelement aus der Toolbox auf den Designer ziehen. Andernfalls generiert der Designer ein Präfix wie z. B. "cc1" standardmäßig. TagPrefixAttrbute ist nicht direkt auf die Steuerelementklasse angewendet. TagPrefixAttrbute anwenden, öffnen Sie AssemblyInfo.cs, fügen Sie die folgende Zeile von Code und anschließend erneutes Erstellen des Projekts.
    [assembly:TagPrefix("ServerControlsLib ", "MyControl")]
    Hinweis , wenn Sie die Quelle über die Befehlszeile erstellen möchten müssen Sie die Datei AssemblyInfo.cs erstellen, platzieren Sie die Datei in das Verzeichnis, das die Quelldateien enthält und führen Sie folgenden Befehl zum Erstellen des Steuerelements:
    csc-/t:library >/out: ServerControlsLib.dll/r: System.dll/d: / r: System.Web.dll *.cs

Was sind die grundlegenden Unterschiede zwischen Benutzersteuerelementen und benutzerdefinierten Steuerelementen?

Nun, Sie eine grundlegende Vorstellung von Was Benutzersteuerelemente und benutzerdefinierte Steuerelemente sind und wie diese erstellen haben, betrachten einer schnellen die Unterschiede zwischen den beiden.
Tabelle minimierenTabelle vergrößern
Faktoren Benutzersteuerelement benutzerdefiniertes Steuerelement
BereitstellungFür die einzelnen Anwendungsszenarios vorgesehen

In dem Quellformular (.ascx) zusammen mit dem Quellcode der Anwendung bereitgestellt wird.

Wenn das Steuerelement in mehreren Anwendungen verwendet werden muss, führt es Redundanz und Wartungsprobleme
So konzipiert, dass es von mehreren Anwendungen verwendet werden kann

Im Verzeichnis Bin der Anwendung oder im globalen Assemblycache bereitgestellt

Verteilte problemlos und ohne Probleme mit Redundanz und Wartung
ErstellenErstellen ist ähnlich wie Web Forms-Seiten erstellt; geeignet für schnelle Anwendungsentwicklung (RAD)Schreiben umfasst viel Code, da keine Designerunterstützung
InhaltEine viel bessere Wahl wenn Sie statischen Inhalte in ein festes Layout benötigen, stellen z. B. Wenn Sie Kopf- und FußzeilenMehr für geeignet, wenn eine Anwendung dynamische benötigt Inhalte angezeigt werden; wiederverwendet werden kann über eine Anwendung z. B. für ein Tabellensteuerelement mit dynamische Zeilen datengebundenes
DesignSchreiben von erfordern keine viel Anwendung entwerfen, da Sie zur Entwurfszeit verfasst werden und größtenteils statische Daten enthaltenSchreiben völlig erfordert ein gutes Verständnis der Lebenszyklus des Steuerelements und die Reihenfolge in der Ereignisse ausgeführt, die normalerweise in Benutzersteuerelementen durchgeführt wird

Erweiterte Themen

Als Nächstes werfen wir einen Blick auf einige erweiterte Features, die Sie beim Entwickeln von benutzerdefinierte Steuerelementen verwenden können.

Zustandsverwaltung

Webanwendungen werden auf HTTP, erstellt die statusfreie ist. Eine Seite und seine untergeordneten Steuerelemente werden bei jeder Anforderung erstellt und der freigegeben, nachdem die Anforderung über ist. Um den Zustand in der klassischen ASP-Programmierung beizubehalten, verwenden Sie Sitzungs- und Objekte. Jedoch dafür müssen Sie dazu viel Code. Um dies zu vermeiden, Java bietet ASP.NET einen Mechanismus, bekannt als Ansichtszustand für Zustand über mehrere Anforderungen hinweg beibehalten. Status Management und der Ansicht Status erfahren, finden Sie auf der folgenden MSDN-Websites:
Einführung in Web Forms-Zustandsverwaltung
http://msdn2.microsoft.com/en-us/library/75x4ha6s(vs.71).aspx

Der Ansichtszustand ASP.NET
http://msdn.microsoft.com/msdnmag/issues/03/02/cuttingedge/default.aspx

Speichern von Web Forms-Seite Werte mithilfe der Ansichtszustand
http://msdn2.microsoft.com/en-us/library/4yfdwycw(vs.71).aspx
Beispiel mit der Ansichtszustand in einem benutzerdefinierten Steuerelement
ViewStateExample.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text;

namespace ServerControlLib
{
	/// <summary>
	/// When a page framework reloads this control after postback, it   
        /// will restore the values which are in view state.
	/// This control can easily perform state management without 
        /// implementing our own logic for maintaining the state.
	/// </summary>
	public class ViewStateExample : WebControl
	{
		// Text to be displayed in Text box control.
		private string _text;
		
		/*
		 * This property needs to be populated before every 
                 * postback in order to 
		 * retain its value.
		*/ 
		public string Text
		{
			get { return (_text == null) ? "_text property is empty"  : _text; }
			set { _text = value; }
		}

		/*
		 * This property needs to be filled once and should be 
                 * available on the successive postbacks.
		*/ 
		public string TextInViewState
		{
			get
			{
				object o = ViewState["TextInViewState"];
				return (o == null) ? "View state is empty" : (string)o;
			}
			set { ViewState["TextInViewState"] = value; } 
		}

		/*
		 * Over-ridden method on WebControl base class which                   
                 * displays both of the property values 
		 * i.e. one stored in view state and other which is not 
                 * saved in view state.
		*/
		protected override void RenderContents(HtmlTextWriter writer)
		{
			writer.Write("Text Without View State = ");
			writer.Write(Text);
			writer.Write("<hr><br>");
			writer.Write("Text In View State = ");
			writer.Write(TextInViewState);
		}
	}
}
Beispiel zur Verwendung des vorherigen Steuerelements auf einer Web Forms-Seite
ViewStateExampleDemo.aspx
<%@ Page Language="C#" %>
<%@ Register TagPrefix="CC" Namespace="ServerControlLib" Assembly = "ServerControlLib" %>

<html>
  <head>
    <script runat="server">
      void button1_Click(object sender, EventArgs e)
      {
          Control1.Text = textbox1.Text;
          Control1.TextInViewState = textbox2.Text;
      }
    </script>
  </head>
  <body>
    <form runat="server" ID="Form1">
      <br>
      Property Value Without View State: <asp:TextBox id="textbox1" 
        runat="server" />
      <br>
      Property Value with View State: <asp:TextBox id="textbox2" 
        runat="server" />

      <asp:Button text="Cause Postback" onClick="button1_Click" 
        id="button1" Runat="server" />

      Output from the ViewStateExample Control :
      <CC:ViewStateExample id="Control1" runat="server"/>
    </form>
  </body>
</html>

Wiedergabe

In diesem Abschnitt werde ich kurz beschreiben, welche Methoden Sie überschreiben sollten, wenn Sie ein benutzerdefiniertes Steuerelement entweder der Control -Klasse oder der WebControl -Klasse ableiten.
Wiedergabe-Methoden der System.Web.UI.Control-Klasse
Informationen über die Wiedergabe-Methoden von der System.Web.UI.Control -Klasse finden Sie auf der folgenden MSDN-Websites:
Control.Render -Methode
http://msdn2.microsoft.com/en-us/library/system.web.ui.control.render(vs.71).aspx

Control.RenderControl -Methode
http://msdn2.microsoft.com/en-us/library/system.web.ui.control.rendercontrol(vs.71).aspx

Control.RenderChildren -Methode
http://msdn2.microsoft.com/en-us/library/system.web.ui.control.renderchildren(vs.71).aspx
Wie ein Steuerelement auf der Seite wiedergegeben
Jede Seite hat eine Steuerelementstruktur, die eine Auflistung aller untergeordneten Steuerelemente für die Seite darstellt. Um die Steuerelementstruktur zu rendern, ein Objekt der HtmlTextWriter -Klasse erstellt, enthält den HTML-Code auf dem Client gerendert werden soll. Das Objekt wird an die RenderControl -Methode übergeben. Wiederum ruft die RenderControl -Methode die Render -Methode. Anschließend ruft die Render -Methode die RenderChildren -Methode auf jedes untergeordnete Steuerelement eine rekursive Schleife vornehmen, bis das Ende der Auflistung erreicht ist. Dieser Prozess ist am besten mit dem folgenden Beispiel wird Code erläutert.
public void RenderControl(HtmlTextWriter writer) 
{
    // Render method on that control will only be called if its visible property is true.
    if (Visible)
    {
        Render(writer);
    }
}

protected virtual void Render(HtmlTextWriter writer) 
{
    RenderChildren(writer);
}
protected virtual void RenderChildren(HtmlTextWriter writer) 
{
    foreach (Control c in Controls) 
    {
        c.RenderControl(writer);
    }
} 
Wiedergabe-Methoden der System.Web.UI.WebControl-Klasse
Informationen über die Wiedergabe-Methoden der System.Web.UI.WebControl -Klasse finden Sie auf der folgenden MSDN-Websites:
WebControl.RenderBeginTag -Methode
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.renderbegintag(vs.71).aspx

WebControl.RenderContents -Methode
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.rendercontents(vs.71).aspx

WebControl.RenderEndTag -Methode
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.webcontrol.renderendtag(vs.71).aspx
Wie die Darstellung der WebControl-Klasse stattfindet
Im folgenden Codebeispiel werden der Render -Methode für das benutzerdefinierte Steuerelement.
protected override void Render(HtmlTextWriter writer)
{
    RenderBeginTag(writer);
    RenderContents(writer);
    RenderEndTag(writer);
}
Sie müssen die Render -Methode für WebControl -Klasse überschreiben. Wenn Inhalt innerhalb der WebControl -Klasse gerendert werden sollen, müssen Sie die Methode RenderContents überschreiben. Jedoch, wenn Sie weiterhin die Render -Methode überschreiben möchten, müssen Sie überschreiben RenderBeginTag -Methode sowie der RenderEndTag -Methode in der spezifischen Reihenfolge, die im vorherigen Codebeispiel angezeigt wird.

Schlussbemerkung

Das ist alles jetzt auf Benutzersteuerelementen und benutzerdefinierten Steuerelementen in ASP.NET 1.0 und ASP.NET 1.1. Ich hoffe, dass in dieser Spalte können Sie erkennen die grundlegenden Unterschiede zwischen Ihnen und der verschiedenen Herangehensweisen, Sie entwickeln.

Vielen Dank für Ihre Zeit. Wir erwarten Weitere Informationen zu den erweiterten Themen für benutzerdefinierte Steuerelemente, z. B. Zustandsverwaltung, Steuerelementstile, zusammengesetzte Steuerelemente und Unterstützung zur Entwurfszeit für benutzerdefinierte Steuerelemente schreiben, in naher Zukunft.

Weitere Informationen zu Steuerelementen finden Sie auf der folgenden MSDN-Websites:
ASP.NET Server Steuerelement Entwicklung Grundlagen
http://msdn2.microsoft.com/en-us/library/aa310918(vs.71).aspx

Eine umfassende Untersuchung von Benutzersteuerelementen
http://msdn2.microsoft.com/en-us/library/ms972975.aspx

Erstellen einer Vorlage gebildete benutzerdefinierter ASP.NET-Serversteuerelemente
http://msdn2.microsoft.com/en-us/library/Aa478964.aspx

Ereignisse in ASP.NET-Serversteuerelementen
http://msdn2.microsoft.com/en-us/library/aa720049(vs.71).aspx

Zusammengesetztes Steuerelement im Vergleich zum Benutzersteuerelement
http://msdn2.microsoft.com/en-us/library/aa719735(vs.71).aspx

Entwickeln von ASP.NET-Serversteuerelementen
http://msdn2.microsoft.com/en-us/library/aa719973(vs.71).aspx

Entwickeln von benutzerdefinierte Steuerelementen: Schlüssel Konzepte
http://msdn2.microsoft.com/en-us/library/aa720226(vs.71).aspx

Hinzufügen von Entwurfszeitunterstützung zu ASP.NET-Steuerelementen
http://msdn2.microsoft.com/en-us/library/Aa478960.aspx
Sie gerne wie immer Ideen auf Themen, die Spalten in Zukunft behandelt werden soll oder in der Knowledge Base mithilfe des Formulars Ask For It zu senden.

Eigenschaften

Artikel-ID: 893667 - Geändert am: Mittwoch, 14. November 2007 - Version: 1.8
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Keywords: 
kbmt kbhowto kbasp KB893667 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 893667
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com