Een ASP.NET User Control maken
Door Michiel van Otegem
7 december 2006
Als je functionaliteit op een pagina wilt hergebruiken heb je hiervoor twee mogelijkheden.
Je kunt een zogenaamde custom control maken en je kunt een User Control maken.
Van die twee opties is het maken van een User Control het eenvoudigste en het meest
voorkomende. Dit artikel kijkt daarom hoe dat in z'n werk gaat.
Het maken van een custom control wordt besproken in ASP.NET custom controls maken met stijl.
Een User Control maak je eigenlijk net zo als een pagina. Het verschil is dat het bestand
de extensie .ascx krijgt in plaats van .aspx. Dit bestand is niet als pagina op te vragen,
maar gebruik je juist in een pagina om functionaliteit aan te bieden. In Visual Web Developer
voeg je een control toe door in de Soilution Explorer rechts te klikken met de muis en te
kiezen voor Add item. In het daarop volgende venster kies je Web User Control.
Hieronder zie je een simpel voorbeeld van een user control. Zoals je ziet is er weinig
anders dan bij een pagina.
1: <%@ Control Language="VB" ClassName="Copyright" %>
2:
3: <script runat="server">
4: Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
5: If Not Page.IsPostBack Then
6: Jaartal.Text = DateTime.Today.Year
7: End If
8: End Sub
9: </script>
10:
11: © copyright
12: <asp:Literal ID="Jaartal" runat="server" />
13: ASPNL.com
De bovenstaande user control geeft een copyright melding weer die altijd het juiste
jaar weergeeft. Je kunt deze control gebruiken door deze in Design-weergave op een
pagina te slepen. Op de plaats waar je de control neergezet hebt wordt de volgende code
ingevoegd:
<uc1:copyright ID="Copyright1" runat="server" />
Bovenin de pagina wordt de control geregistreerd met de onderstaande code:
<%@ Register Src="Copyright.ascx" TagName="Copyright" TagPrefix="uc1" %>
Eigenschappen toevoegen
Als je controls toevoegt aan de user control, kunnen deze onderling net zo met elkaar
werken als op een pagina. De pagina waarin de user control gebruikt wordt ziet echter
alleen de buitenkant en kan niets beïnvloeden van wat er in een user control gebeurt.
Als je een pagina de mogelijkheid wil bieden interactie te hebben met een user control,
dan kun je onder andere functies en eigenschappen toevoegen. Vooral dat laatste komt veel
voor, om de pagina de gelegenheid te geven de user control in te stellen. In het voorbeeld
hierboven zou het bijvoorbeeld handig zijn als de copyrightmelding een aantal jaren
laat zien, vanaf een bepaald jaar. Je moet dan in de pagina kunnen aangeven bij welk jaar
begonnen moet worden. Door de control uit te breiden zoals hieronder kan dat.
1: <%@ Control Language="VB" ClassName="Copyright" %>
2:
3: <script runat="server">
4: Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
5: If Not Page.IsPostBack Then
6: If Jaar.Equals(DateTime.Now.Year.ToString()) Then
7: Jaartal.Text = Jaar
8: Else
9: Dim basis As String = "{0}-{1}"
10: Jaartal.Text = String.Format(basis, Jaar, DateTime.Now.Year)
11: End If
12: End If
13: End Sub
14:
15: Dim Jaar As String
16: Public Property StartJaar() As String
17: Get
18: Return Jaar
19: End Get
20: Set(ByVal value As String)
21: Jaar = value
22: End Set
23: End Property
24: </script>
25:
26: © copyright
27: <asp:Literal ID="Jaartal" runat="server" />
28: ASPNL.com
De bovenstaande control kan dan als volgt gebruikt worden:
<uc1:copyright ID="Copyright1" runat="server" StartJaar="2005" />
|