AdRotator.Render(HtmlTextWriter) Method


Displays the AdRotator control on the client.

protected public:
 override void Render(System::Web::UI::HtmlTextWriter ^ writer);
protected internal override void Render (System.Web.UI.HtmlTextWriter writer);
override this.Render : System.Web.UI.HtmlTextWriter -> unit
Protected Friend Overrides Sub Render (writer As HtmlTextWriter)



A HtmlTextWriter that contains the output stream to render on the client.


The following code example demonstrates how to override the Render method in a custom server control so that the AdRotator displays a random advertisement, from an XML file, with a link and an image.

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls" Assembly="Samples.AspNet.CS" %>
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="" >
    <title>Custom AdRotator - Render - C# Example</title>
    <form id="Form1" method="post" runat="server">
      <h3>Custom AdRotator - Render - C# Example</h3>

        AdvertisementFile="~/App_Data/Ads.xml" />

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB.Controls" Assembly="Samples.AspNet.VB" %>
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="" >
    <title>Custom AdRotator - Render - VB.NET Example</title>
    <form id="Form1" method="post" runat="server">
      <h3>Custom AdRotator - Render - VB.NET Example</h3>
      <aspSample:CustomADRotatorRender id="CustomAdRotator1" runat="server" Target="_blank" AdvertisementFile="~/App_Data/Ads.xml" />
namespace Samples.AspNet.CS.Controls
  [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
  public class CustomADRotatorRender : System.Web.UI.WebControls.AdRotator
    private const string ApplicationCachePrefix = "CustomAdRotatorCache: ";

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
      string navigateUrl = System.String.Empty;
      string imageUrl = System.String.Empty;
      string alternateText = System.String.Empty;

      // If the value for the Advertisement File is not empty.
      if (this.AdvertisementFile.Length > 0 ) 
        // Get a random ad.
        GetRandomAd(out imageUrl, out navigateUrl, out alternateText);

      // Create and render a new HyperLink Web control.
      System.Web.UI.WebControls.HyperLink bannerLink = new System.Web.UI.WebControls.HyperLink();
      foreach(string key in this.Attributes.Keys) 
        bannerLink.Attributes[key] = this.Attributes[key];
      if (this.ID != null && this.ID.Length > 0) 
        bannerLink.ID = this.ClientID;
      bannerLink.NavigateUrl = navigateUrl; 
      bannerLink.Target = this.Target;
      bannerLink.AccessKey = this.AccessKey;
      bannerLink.Enabled = this.Enabled;
      bannerLink.TabIndex = this.TabIndex;

      // Create and render a new Image Web control.
      System.Web.UI.WebControls.Image bannerImage = new System.Web.UI.WebControls.Image();
      if (ControlStyleCreated) 
      bannerImage.AlternateText = alternateText;   
      bannerImage.ImageUrl = imageUrl;   
      bannerImage.ToolTip = this.ToolTip;
    private void GetRandomAd(out string imageUrl, out string navigateUrl, out string alternateText) 
      // Default output parameters values.
      imageUrl = System.String.Empty;
      navigateUrl = System.String.Empty;
      alternateText = System.String.Empty;

      // Try to get the Ads DataSet from the ASP.NET cache.
      string physicalPath = MapPathSecure(this.AdvertisementFile);
      string fileKey = ApplicationCachePrefix + physicalPath;
      System.Web.Caching.Cache cache = System.Web.HttpContext.Current.Cache;
      System.Data.DataSet dataSet = cache[fileKey] as System.Data.DataSet;

      // If the Ads DataSet was not found in the ASP.NET cache.
      if (dataSet == null) 
        // Get the Ads from an XML file.
        dataSet =  new System.Data.DataSet();
        dataSet.ReadXml(physicalPath, System.Data.XmlReadMode.InferSchema);

        // Insert the DataSet into the Cache.
        // Make sure your AntiVirus software doesn't touch the XMLf file, 
        // or else the cache will be empty each time the Render method gets called.
        cache.Insert(fileKey, dataSet, new System.Web.Caching.CacheDependency(physicalPath));
      // If Ads were found in the XML File.
      int totalAds = dataSet.Tables[0].Rows.Count;
      if (totalAds > 0)
        // Select a random Ad.
        System.Random randomNumber = new System.Random();
        int selectedAdIndex = randomNumber.Next(totalAds);

        // Output the random Ad's values.
        imageUrl = dataSet.Tables[0].Rows[selectedAdIndex].ItemArray[0].ToString();
        navigateUrl = dataSet.Tables[0].Rows[selectedAdIndex].ItemArray[1].ToString();
        alternateText = dataSet.Tables[0].Rows[selectedAdIndex].ItemArray[2].ToString();
<AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
Public NotInheritable Class CustomADRotatorRender
    Inherits System.Web.UI.WebControls.AdRotator

    Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
        Dim navigateUrl As String = System.String.Empty
        Dim imageUrl As String = System.String.Empty
        Dim alternateText As String = System.String.Empty

        ' If the value for the Advertisement File is not empty.
        If Me.AdvertisementFile.Length > 0 Then
            ' Get a random ad.
            GetRandomAd(imageUrl, navigateUrl, alternateText)
        End If

        ' Create and render a new HyperLink Web control.
        Dim bannerLink As New System.Web.UI.WebControls.HyperLink
        Dim key As String
        For Each key In Me.Attributes.Keys
            bannerLink.Attributes(key) = Me.Attributes(key)
        Next key
        If Not (Me.ID Is Nothing) AndAlso Me.ID.Length > 0 Then
            bannerLink.ID = Me.ClientID
        End If
        bannerLink.NavigateUrl = navigateUrl
        bannerLink.Target = Me.Target
        bannerLink.AccessKey = Me.AccessKey
        bannerLink.Enabled = Me.Enabled
        bannerLink.TabIndex = Me.TabIndex

        ' Create and render a new Image Web control.
        Dim bannerImage As New System.Web.UI.WebControls.Image
        If ControlStyleCreated Then
        End If
        bannerImage.AlternateText = alternateText
        bannerImage.ImageUrl = imageUrl
        bannerImage.ToolTip = Me.ToolTip
    End Sub

    Private Sub GetRandomAd(ByRef imageUrl As String, ByRef navigateUrl As String, ByRef alternateText As String)
        ' Default output parameters values to empty string
        imageUrl = System.String.Empty
        navigateUrl = System.String.Empty
        alternateText = System.String.Empty

        ' Get the Ads from an XML file.
        Dim dataSet As New System.Data.DataSet
        Dim physicalPath As String = MapPathSecure(Me.AdvertisementFile)
        dataSet.ReadXml(physicalPath, System.Data.XmlReadMode.InferSchema)

        ' If Ads were found in the XML File.
        Dim totalAds As Integer = dataSet.Tables(0).Rows.Count
        If totalAds > 0 Then

            ' Select a random Ad.
            Dim randomNumber As New System.Random
            Dim selectedAdIndex As Integer = randomNumber.Next(totalAds)

            ' Output the random Ad's values.
            imageUrl = dataSet.Tables(0).Rows(selectedAdIndex).ItemArray(0).ToString()
            navigateUrl = dataSet.Tables(0).Rows(selectedAdIndex).ItemArray(1).ToString()
            alternateText = dataSet.Tables(0).Rows(selectedAdIndex).ItemArray(2).ToString()
        End If
    End Sub
End Class


Displays an image obtained from the advertisement chosen in OnPreRender.

Applies to

See also