ASPNL logo (1 kb)
zaterdag 17 mei 2008




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht | volgende >>

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:  &copy; 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:  &copy; 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" />

<< vorige | ^ naar boven | overzicht | volgende >>
copyright 2000-2007 ASPNL