1. Code
  2. Coding Fundamentals

Erstellen Sie ASP.NET-Serversteuerelemente von Grund auf neu

Scroll to top

German (Deutsch) translation by Valentina (you can also view the original English article)

In diesem Tutorial erfahren Sie, wie Sie ein ASP.NET-Serversteuerelement erstellen, indem Sie ein HTML5-Videoplayer-Steuerelement erstellen. Auf dem Weg dorthin werden wir den grundlegenden Prozess der Serversteuerungsentwicklung von Grund auf überprüfen.


Einführung

ASP.NET wird mit eigenen serverseitigen Steuerelementen geliefert. Warum also eigene erstellen?

Durch das Erstellen eigener Steuerelemente können wir leistungsstarke, wiederverwendbare visuelle Komponenten für die Benutzeroberfläche unserer Webanwendung erstellen.

Dieses Tutorial führt Sie in den Prozess der Entwicklung der ASP.NET-Serversteuerung ein. Sie werden auch sehen, wie das Erstellen eigener Steuerelemente gleichzeitig die Qualität Ihrer Webanwendungen verbessern, Sie produktiver machen und Ihre Benutzeroberflächen verbessern kann.

Benutzerdefinierte ASP.NET-Steuerelemente sind flexibler als Benutzersteuerelemente. Wir können ein benutzerdefiniertes Steuerelement erstellen, das von einem anderen serverseitigen Steuerelement erbt, und dieses Steuerelement dann erweitern. Wir können auch ein benutzerdefiniertes Steuerelement für Projekte freigeben. In der Regel erstellen wir unser benutzerdefiniertes Steuerelement in einer benutzerdefinierten Websteuerelementbibliothek, die separat von unserer Webanwendung kompiliert wird. Infolgedessen können wir diese Bibliothek zu jedem Projekt hinzufügen, um unser benutzerdefiniertes Steuerelement in diesem Projekt zu verwenden.


HTML5-Videoübersicht

Bisher gab es noch nie eine native Möglichkeit, Videos auf einer Webseite anzuzeigen. Heutzutage werden die meisten Videos mithilfe eines Plugins (wie Flash oder Silverlight) angezeigt. Allerdings haben nicht alle Browser die gleichen Plugins. HTML5 gibt eine native Standardmethode zum Einfügen von Videos in das video-Element an.

Derzeit gibt es zwei weit verbreitete Videoformate für das Videoelement: Ogg-Dateien [codiert mit Theora und Vorbis für Video bzw. Audio] und MPEG 4-Dateien [codiert mit H.264 und AAC].

Um ein Video in HTML5 zu zeigen, ist dies alles, was wir brauchen:

1
<video width="320" height="240" controls="controls">
2
  <source src="movie.ogg" type="video/ogg" />
3
  <source src="movie.mp4" type="video/mp4" />
4
</video>

Das controls-Attribut dient zum Hinzufügen von Steuerelementen für Wiedergabe, Pause und Lautstärke. Ohne dieses Attribut scheint Ihr Video nur ein Bild zu sein. Es ist auch immer eine gute Idee, sowohl die width- als auch die height-Attribute einzubeziehen. Die folgende Tabelle zeigt alle Attribute des <video>-Elements:

  • autoplay: Gibt an, dass das Video abgespielt wird, sobald es fertig ist
  • controls: Gibt an, dass Steuerelemente angezeigt werden, z. B. eine Wiedergabetaste
  • height: Die Höhe des Videoplayers
  • loop: Gibt an, dass die Mediendatei jedes Mal neu gestartet wird, wenn sie fertig ist
  • preload: Gibt an, dass das Video beim Laden der Seite geladen und zur Ausführung bereit ist. Wird ignoriert, wenn "Autoplay" vorhanden ist
  • src: Die URL des abzuspielenden Videos
  • width: Die Breite des Videoplayers
  • poster: Die URL des anzuzeigenden Bildes, solange keine Videodaten verfügbar sind

Schritt 0: Erste Schritte

Für den Einstieg ist lediglich eine Kopie von Visual Studio von Visual Web Developer Express erforderlich. Wenn Sie nicht über die Vollversion von Visual Studio verfügen, können Sie die kostenlose Express Edition herunterladen.

Der HTML5-Videoplayer, den wir hier erstellen, ist nur ein einfacher Videoplayer, der die native Oberfläche des Browsers rendert. In Browsern, die HTML5-Videos unterstützen, sind Videoplayer integriert, einschließlich einer Reihe von Steuerelementen (Wiedergabe/Pause usw.), sodass Sie beim Ausführen dieses Steuerelements für jeden Browser eine andere Benutzeroberfläche sehen.

HTML5 Video Player of FirefoxHTML5 Video Player of FirefoxHTML5 Video Player of Firefox
Der HTML5-Videoplayer in Firefox 3.6.8.

Schritt 1: Erstellen eines benutzerdefinierten Steuerungsprojekts

Zuerst müssen wir ein neues Klassenbibliotheksprojekt erstellen, um unsere benutzerdefinierten Steuerelemente zu speichern. Durch Erstellen des benutzerdefinierten Steuerelements in einer separaten Klassenbibliothek können wir das Projekt in eine separate DLL kompilieren und das benutzerdefinierte Steuerelement in jeder Anwendung verwenden, die dies erfordert.

Öffnen Sie Ihr ASP.NET-Projekt mit Visual Studio oder Visual Web Developer. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Lösungsnamen und wählen Sie im Kontextmenü die Option Add New Project. Wählen Sie im Dialogfeld Neues Projekt hinzufügen den Projekttyp als Web-Projekt aus und wählen Sie als Vorlage ASP.NET Server Control aus:

Add New ProjectAdd New ProjectAdd New Project

Nennen Sie das Projekt CustomControls. Klicken Sie OK. Das neue ASP.NET Server Control-Projekt wird erstellt, und Visual Studio bietet Ihnen zunächst ein einfaches Websteuerelement. Löschen Sie dieses benutzerdefinierte Steuerelement, da es nicht benötigt wird.


Schritt 2: Hinzufügen eines benutzerdefinierten Websteuerelements zum Projekt

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das CustomControls-Projekt und wählen Sie im Kontextmenü die Option Add New Item. Wählen Sie im Dialogfeld Add New Item den Kategorietyp als Web-Kategorie aus und wählen Sie in den Vorlagen ASP.NET Server Control aus.

Add New ItemAdd New ItemAdd New Item

Nennen Sie den neuen benutzerdefinierten Steuerelement-VideoPlayer. Klicken Sie auf Add. Das neue benutzerdefinierte Steuerelement (VideoPlayer.cs) wird erstellt und dem CustomControls-Projekt hinzugefügt.

1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Linq;
5
using System.Text;
6
using System.Web;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
10
namespace CustomControls
11
{
12
    [DefaultProperty("Text")]
13
    [ToolboxData("<{0}:VideoPlayer runat=server></{0}:VideoPlayer>")]
14
    public class VideoPlayer : WebControl
15
    {
16
        [Bindable(true)]
17
        [Category("Appearance")]
18
        [DefaultValue("")]
19
        [Localizable(true)]
20
        public string Text
21
        {
22
            get
23
            {
24
                String s = (String)ViewState["Text"];
25
                return ((s == null) ? "[" + this.ID + "]" : s);
26
            }
27
28
            set
29
            {
30
                ViewState["Text"] = value;
31
            }
32
        }
33
34
        protected override void RenderContents(HtmlTextWriter output)
35
        {
36
            output.Write(Text);
37
        }
38
    }
39
}
40
        

Der obige Code ist der Standardcode, der von Visual Studio für eine Websteuerungsbibliothek generiert wird. Um mit VideoPlayer.cs arbeiten zu können, müssen Sie den obigen Code ändern. Als erstes sollten wir alles zwischen der Klassendeklarationszeile und dem Ende der Klasse löschen. Das lässt uns mit diesem Code:

1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Linq;
5
using System.Text;
6
using System.Web;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
10
namespace CustomControls
11
{
12
    [DefaultProperty("Text")]
13
    [ToolboxData("<{0}:VideoPlayer runat=server></{0}:VideoPlayer>")]
14
    public class VideoPlayer : WebControl
15
    {
16
        
17
    }
18
}
19
        

Wie Sie oben sehen, leitet sich die VideoPlayer-Klasse von der System.Web.UI.WebControl-Klasse ab. Tatsächlich stammen alle serverseitigen ASP.NET-Steuerelemente von der WebControl-Klasse.


Schritt 3: Ändern der Klassendeklarationslinie

Die Klassendeklarationszeile im Standardcode gibt auch die Standardeigenschaft für das VideoPlayer-Steuerelement als Text-Eigenschaft an. Das hier erstellte VideoPlayer-Steuerelement verfügt nicht über eine Eigenschaft namens Text. Löschen Sie daher den Verweis auf Text als Standardeigenschaft. Nach allen Änderungen sollte die Codedatei VideoPlayer.cs folgendermaßen aussehen:

1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Linq;
5
using System.Text;
6
using System.Web;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
10
namespace CustomControls
11
{
12
    [ToolboxData("<{0}:VideoPlayer runat=server></{0}:VideoPlayer>")]
13
    public class VideoPlayer : WebControl 
14
    {
15
16
    }
17
}
18
        

Schritt 4: Hinzufügen von Eigenschaften

In diesem Schritt fügen wir dem VideoPlayer-Steuerelement einige Eigenschaften hinzu, um das Verhalten des Steuerelements zu behandeln. Im Folgenden finden Sie eine Liste der Eigenschaften, die wir der Codedatei VideoPlayer.cs hinzufügen werden:

  • VideoUrl: Eine Zeichenfolgeeigenschaft, die die URL des abzuspielenden Videos angibt.
  • PosterUrl: Eine Zeichenfolgeeigenschaft, die die Adresse einer Bilddatei angibt, die angezeigt werden soll, solange keine Videodaten verfügbar sind.
  • AutoPlay: Eine boolesche Eigenschaft, mit der angegeben wird, ob das Video beim Öffnen der Webseite automatisch abgespielt werden soll oder nicht.
  • DisplayControlButtons: Eine boolesche Eigenschaft, die angibt, ob die Player-Navigationsschaltflächen angezeigt werden oder nicht.
  • Loop: Eine boolesche Eigenschaft, die angibt, ob das Video bei jedem Abschluss erneut gestartet wird oder nicht.

Fügen Sie der VideoPlayer-Klasse den folgenden Code hinzu:

1
private string _Mp4Url;
2
public string Mp4Url
3
{
4
    get { return _Mp4Url; }
5
    set { _Mp4Url = value; }
6
}
7
8
private string _OggUrl = null;
9
public string OggUrl
10
{
11
    get { return _OggUrl; }
12
    set { _OggUrl = value; }
13
}
14
15
private string _Poster = null;
16
public string PosterUrl
17
{
18
    get { return _Poster; }
19
    set { _Poster = value; }
20
}
21
22
private bool _AutoPlay = false;
23
public bool AutoPlay
24
{
25
    get { return _AutoPlay; }
26
    set { _AutoPlay = value; }
27
}
28
29
private bool _Controls = true;
30
public bool DisplayControlButtons
31
{
32
    get { return _Controls; }
33
    set { _Controls = value; }
34
}
35
36
private bool _Loop = false;
37
public bool Loop
38
{
39
    get { return _Loop; }
40
    set { _Loop = value; }
41
}
42
        

Nachdem wir die obigen Eigenschaften hinzugefügt haben, sollte die VideoPlayer-Klasse so aussehen

1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Linq;
5
using System.Text;
6
using System.Web;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
10
namespace CustomControls
11
{
12
    [ToolboxData("<{0}:VideoPlayer runat=server></{0}:VideoPlayer>")]
13
    public class VideoPlayer : WebControl 
14
    {
15
        private string _Mp4Url;
16
        public string Mp4Url
17
        {
18
            get { return _Mp4Url; }
19
            set { _Mp4Url = value; }
20
        }
21
22
        private string _OggUrl = null;
23
        public string OggUrl
24
        {
25
            get { return _OggUrl; }
26
            set { _OggUrl = value; }
27
        }
28
29
        private string _Poster = null;
30
        public string PosterUrl
31
        {
32
            get { return _Poster; }
33
            set { _Poster = value; }
34
        }
35
36
        private bool _AutoPlay = false;
37
        public bool AutoPlay
38
        {
39
            get { return _AutoPlay; }
40
            set { _AutoPlay = value; }
41
        }
42
43
        private bool _Controls = true;
44
        public bool DisplayControlButtons
45
        {
46
            get { return _Controls; }
47
            set { _Controls = value; }
48
        }
49
50
        private bool _Loop = false;
51
        public bool Loop
52
        {
53
            get { return _Loop; }
54
            set { _Loop = value; }
55
        }
56
    }
57
}
58
        

Schritt 5: Erstellen der RenderContents-Methode

Die Hauptaufgabe eines Serversteuerelements besteht darin, eine Art Markup-Sprache für den HTTP-Ausgabestream zu rendern, der an den Client zurückgegeben und von diesem angezeigt wird. Es liegt in unserer Verantwortung als Steuerungsentwickler, der Serversteuerung mitzuteilen, welches Markup gerendert werden soll. Die überschriebene RenderContents-Methode ist der primäre Speicherort, an dem wir dem Steuerelement mitteilen, was wir für den Client rendern möchten.

Fügen Sie der VideoPlayer-Klasse die folgende RenderContents-Überschreibungsmethode hinzu:

1
protected override void RenderContents(HtmlTextWriter output)
2
{
3
            
4
}
5
        

Beachten Sie, dass die RenderContents-Methode einen Methodenparameter namens output hat. Dieser Parameter ist ein HtmlTextWriter-Objekt, mit dem das Steuerelement HTML für den Client rendert. Die HtmlTextwriter-Klasse verfügt über eine Reihe von Methoden, mit denen Sie Ihren HTML-Code rendern können, einschließlich AddAttribute und RenderBeginTag.


Schritt 6: Hinzufügen von Tag-Attributen

Bevor wir den Code zum Rendern des <video>-Elements schreiben, müssen Sie zunächst einige Attribute hinzufügen. Wir können die AddAttribute-Methode des HtmlTextWriter-Objekts verwenden, um Attribute für HTML-Tags hinzuzufügen.

Fügen Sie den folgenden Code in die RenderContents-Methode ein:

1
output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);
2
output.AddAttribute(HtmlTextWriterAttribute.Width, this.Width.ToString());
3
output.AddAttribute(HtmlTextWriterAttribute.Height, this.Height.ToString());
4
5
if (DisplayControlButtons == true)
6
{
7
    output.AddAttribute("controls", "controls");
8
}
9
            
10
if (PosterUrl != null)
11
{
12
    output.AddAttribute("poster", PosterUrl);
13
}
14
            
15
if (AutoPlay == true)
16
{
17
    output.AddAttribute("autoplay", "autoplay");
18
}
19
            
20
if (Loop == true)
21
{
22
    output.AddAttribute("loop", "loop");
23
}
24
        

Sie können sehen, dass wir mithilfe der AddAttribute-Methode dem Tag sieben Attribute hinzugefügt haben. Beachten Sie auch, dass wir eine Aufzählung, HtmlTextWriterAttribute, verwenden, um das Attribut auszuwählen, das wir dem Tag hinzufügen möchten.

Nachdem wir den obigen Code hinzugefügt haben, sollte die RenderContents-Methode folgendermaßen aussehen:

1
protected override void RenderContents(HtmlTextWriter output)
2
{
3
    output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);
4
    output.AddAttribute(HtmlTextWriterAttribute.Width, this.Width.ToString());
5
    output.AddAttribute(HtmlTextWriterAttribute.Height, this.Height.ToString());
6
    
7
    if (DisplayControlButtons == true)
8
    {
9
        output.AddAttribute("controls", "controls");
10
    }
11
            
12
    if (PosterUrl != null)
13
    {
14
        output.AddAttribute("poster", PosterUrl);
15
    }
16
            
17
    if (AutoPlay == true)
18
    {
19
        output.AddAttribute("autoplay", "autoplay");
20
    }
21
            
22
    if (Loop == true)
23
    {
24
        output.AddAttribute("loop", "loop");
25
    }
26
}
27
        

Schritt 7: Rendern des <video>-Elements

Nachdem Sie einige Tag-Attribute für das Videoelement hinzugefügt haben, ist es Zeit, das <video>-Tag mit seinen Attributen im HTML-Dokument zu rendern. Fügen Sie der RenderContents-Methode den folgenden Code hinzu:

1
output.RenderBeginTag("video");
2
if (OggUrl != null)
3
{
4
    output.AddAttribute("src", OggUrl);
5
    output.AddAttribute("type", "video/ogg");
6
    output.RenderBeginTag("source");
7
    output.RenderEndTag();
8
}
9
10
if (Mp4Url != null)
11
{
12
    output.AddAttribute("src", Mp4Url);
13
    output.AddAttribute("type", "video/mp4");
14
    output.RenderBeginTag("source");
15
    output.RenderEndTag();
16
}
17
output.RenderEndTag();
18
        

Wir verwenden die RenderBeginTag-Methode des output-Objekts, um das öffnende Tag des Videoelements zu rendern, und RenderEndTag, um das schließende Tag zu rendern. Wir haben auch das <source>-Element zwischen dem <video>-Element hinzugefügt. Das Videoelement ermöglicht mehrere Quellelemente. Source-Elemente können mit verschiedenen Videodateien verknüpft werden. Der Browser verwendet das erste erkannte Format.

Die RenderContents-Methode sollte folgendermaßen aussehen, nachdem wir den obigen Code hinzugefügt haben:

1
protected override void RenderContents(HtmlTextWriter output)
2
{
3
    output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);
4
    output.AddAttribute(HtmlTextWriterAttribute.Width, this.Width.ToString());
5
    output.AddAttribute(HtmlTextWriterAttribute.Height, this.Height.ToString());
6
    
7
    if (DisplayControlButtons == true)
8
    {
9
        output.AddAttribute("controls", "controls");
10
    }
11
            
12
    if (PosterUrl != null)
13
    {
14
        output.AddAttribute("poster", PosterUrl);
15
    }
16
            
17
    if (AutoPlay == true)
18
    {
19
        output.AddAttribute("autoplay", "autoplay");
20
    }
21
            
22
    if (Loop == true)
23
    {
24
        output.AddAttribute("loop", "loop");
25
    }
26
    
27
    output.RenderBeginTag("video");
28
    if (OggUrl != null)
29
    {
30
        output.AddAttribute("src", OggUrl);
31
        output.AddAttribute("type", "video/ogg");
32
        output.RenderBeginTag("source");
33
        output.RenderEndTag();
34
        }
35
36
    if (Mp4Url != null)
37
    {
38
        output.AddAttribute("src", Mp4Url);
39
        output.AddAttribute("type", "video/mp4");
40
        output.RenderBeginTag("source");
41
        output.RenderEndTag();
42
    }
43
    output.RenderEndTag();
44
}
45
        

Beachten Sie, dass die Reihenfolge, in der wir die AddAttributes-Methoden platzieren, wichtig ist. Wir platzieren die AddAttributes-Methoden direkt vor der RenderBeginTag-Methode im Code. Die AddAttributes-Methode ordnet die Attribute dem nächsten HTML-Tag zu, das von der RenderBeginTag-Methode gerendert wird, in diesem Fall dem video-Tag.


Schritt 8: Entfernen des Span-Tags

Standardmäßig umgibt ASP.NET das Steuerelement-Tag beim Rendern des HTML-Markups des Steuerelements mit einem <span>-Element. Wenn wir einen ID-Wert für unser Steuerelement angegeben haben, rendert das Span-Tag standardmäßig auch ein ID-Attribut. Das Vorhandensein der Tags kann manchmal problematisch sein. Wenn wir dies in ASP.NET verhindern möchten, können wir einfach die Render-Methode überschreiben und die RenderContents-Methode direkt aufrufen. So geht's:

1
protected override void Render(HtmlTextWriter writer)
2
{
3
    this.RenderContents(writer);
4
}
5
        

Nachdem wir den obigen Code hinzugefügt haben, sollte die VideoPlayer-Klasse folgendermaßen aussehen:

1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Linq;
5
using System.Text;
6
using System.Web;
7
using System.Web.UI;
8
using System.Web.UI.WebControls;
9
10
namespace CustomControls
11
{
12
    [ToolboxData("<{0}:VideoPlayer runat=server></{0}:VideoPlayer>")]
13
    public class VideoPlayer : WebControl 
14
    {
15
        private string _Mp4Url;
16
        public string Mp4Url
17
        {
18
            get { return _Mp4Url; }
19
            set { _Mp4Url = value; }
20
        }
21
22
        private string _OggUrl = null;
23
        public string OggUrl
24
        {
25
            get { return _OggUrl; }
26
            set { _OggUrl = value; }
27
        }
28
29
        private string _Poster = null;
30
        public string PosterUrl
31
        {
32
            get { return _Poster; }
33
            set { _Poster = value; }
34
        }
35
36
        private bool _AutoPlay = false;
37
        public bool AutoPlay
38
        {
39
            get { return _AutoPlay; }
40
            set { _AutoPlay = value; }
41
        }
42
43
        private bool _Controls = true;
44
        public bool DisplayControlButtons
45
        {
46
            get { return _Controls; }
47
            set { _Controls = value; }
48
        }
49
50
        private bool _Loop = false;
51
        public bool Loop
52
        {
53
            get { return _Loop; }
54
            set { _Loop = value; }
55
        }
56
57
        protected override void RenderContents(HtmlTextWriter output)
58
        {
59
            output.AddAttribute(HtmlTextWriterAttribute.Id, this.ID);
60
            output.AddAttribute(HtmlTextWriterAttribute.Width, this.Width.ToString());
61
            output.AddAttribute(HtmlTextWriterAttribute.Height, this.Height.ToString());
62
            if (DisplayControlButtons == true)
63
            {
64
                output.AddAttribute("controls", "controls");
65
            }
66
            
67
            if (PosterUrl != null)
68
            {
69
                output.AddAttribute("poster", PosterUrl);
70
            }
71
            
72
            if (AutoPlay == true)
73
            {
74
                output.AddAttribute("autoplay", "autoplay");
75
            }
76
            
77
            if (Loop == true)
78
            {
79
                output.AddAttribute("loop", "loop");
80
            }
81
            
82
            output.RenderBeginTag("video");
83
            if (OggUrl != null)
84
            {
85
                output.AddAttribute("src", OggUrl);
86
                output.AddAttribute("type", "video/ogg");
87
                output.RenderBeginTag("source");
88
                output.RenderEndTag();
89
            }
90
91
            if (Mp4Url != null)
92
            {
93
                output.AddAttribute("src", Mp4Url);
94
                output.AddAttribute("type", "video/mp4");
95
                output.RenderBeginTag("source");
96
                output.RenderEndTag();
97
            }
98
            output.RenderEndTag();
99
        }
100
101
        protected override void Render(HtmlTextWriter writer)
102
        {
103
            this.RenderContents(writer);
104
        }
105
    }
106
}
107
        

Unsere Kontrolle ist jetzt beendet! Wir müssen das Projekt nur noch erstellen, bevor wir es auf einer ASP.NET-Webseite verwenden.


Schritt 9: Erstellen des Projekts

Es ist Zeit, das Projekt aufzubauen. Wählen Sie Build und klicken Sie dann im Hauptmenü auf Build Solution.

Build SolutionBuild SolutionBuild Solution

Nach dem Erstellen des Projekts müssen Sie im nächsten Schritt das VideoPlayer-Steuerelement in den Toolbox Explorer einfügen.


Schritt 10: Hinzufügen des VideoPlayer-Steuerelements zur Visual Studio Toolbox

  • Klicken Sie im Toolbox Explorer mit der rechten Maustaste, um das VideoPlayer-Steuerelement zur Toolbox hinzuzufügen
  • Choose Items aus dem Kontextmenü
  • Klicken Sie im Dialogfeld Toolbox-Elemente auswählen auf die Schaltfläche Browse 
  • Navigieren Sie zum ASP.NET-Projektverzeichnis
  • Wechseln Sie in das CustomControls-Verzeichnis
  • Öffnen Sie das Verzeichnis Bin\Debug (Visual Studio erstellt standardmäßig Debug-Versionen.)
  • Wählen Sie die CustomControls.DLL-Assembly aus und klicken Sie auf die Open-Schaltfläche
Choose Toolbox ItemsChoose Toolbox ItemsChoose Toolbox Items

VideoPlayer wird im Dialogfeld Toolbox-Elemente auswählen angezeigt (sehen Sie Abbildung oben). Das Kontrollkästchen zeigt es als ausgewählt an. Sobald Sie im Dialogfeld Toolbox-Elemente auswählen auf die Schaltfläche OK klicken, wird das neue VideoPlayer-Steuerelement in der Toolbox angezeigt.

Visual Studio Toolbox ExplorerVisual Studio Toolbox ExplorerVisual Studio Toolbox Explorer

Schritt 11: Platzieren des VideoPlayer-Steuerelements auf der ASP.NET-Webseite

Um zu sehen, wie die Steuerung funktioniert, müssen wir ihr ein Zuhause geben. Fügen Sie der Website eine neue Seite hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das ASP.NET-Projekt. Wählen Sie Add New Item und fügen Sie ein Web Form hinzu. Nennen Sie das Webformular VideoPlayerTest.aspx.

Wechseln Sie in den Design-Modus, um das Steuerelement auf der Seite zu platzieren. Ziehen Sie das VideoPlayer-Steuerelement aus der Toolbox und legen Sie es in der Entwurfsansicht VideoPlayerTest.aspx ab.

Die folgende Auflistung zeigt, wie das Steuerelement auf der Seite deklariert wird:

1
<cc1:VideoPlayer ID="VideoPlayer1" runat="server" Mp4Url="videos/movie.mp4" OggUrl="videos/movie.ogg" Width="400" Height="300" />

Die folgende Codezeile wurde von Visual Studio zur ASPX-Datei hinzugefügt, um das Steuerelement aufzunehmen. Sie können es anzeigen, indem Sie in Visual Studio unten im Codefenster die Registerkarte Source auswählen. Die Register-Direktive teilt der ASP.NET-Laufzeit mit, wo sich das benutzerdefinierte Steuerelement (welche Assembly) befindet, und ordnet es einem Tag-Präfix zu.

1
<%@ Register assembly="CustomControls" namespace="CustomControls" tagprefix="cc1" %>

Wir können jetzt die Steuerung testen.

HTML5 Video PlayerHTML5 Video PlayerHTML5 Video Player
VideoPlayer-Steuerelement, das unter Google Chrome ausgeführt wird.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie Ihr eigenes benutzerdefiniertes ASP.NET-Serversteuerelement von Grund auf neu erstellen. Sie kennen jetzt jeden Schritt des Prozesses - vom Erstellen eines Projekts für eine benutzerdefinierte Websteuerelementbibliothek über das Hinzufügen von Eigenschaften zu einem benutzerdefinierten Steuerelement, das Rendern des HTML-Markups des Steuerelements für den Client bis hin zur Verwendung des Benutzerdefiniertes ASP.NET-Steuerelement in einem Webformular.

Hoffentlich verfügen Sie jetzt über die Fähigkeiten, benutzerdefinierte Steuerelemente zu erstellen, die alle Funktionen der serverseitigen Standardsteuerelemente von ASP.NET bieten. Vielen Dank fürs Lesen!