AdRotator.Render-Methode
Zeigt das AdRotator-Steuerelement auf dem Client an.
Namespace: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)
Syntax
'Declaration
Protected Friend Overrides Sub Render ( _
writer As HtmlTextWriter _
)
'Usage
Dim writer As HtmlTextWriter
Me.Render(writer)
protected internal override void Render (
HtmlTextWriter writer
)
protected public:
virtual void Render (
HtmlTextWriter^ writer
) override
protected void Render (
HtmlTextWriter writer
)
protected internal override function Render (
writer : HtmlTextWriter
)
Parameter
- writer
Ein System.Web.UI.HtmlTextWriter, der den Ausgabestream enthält, der auf dem Client wiedergegeben werden soll.
Hinweise
Zeigt ein aus der in OnPreRender ausgewählten Werbung abgerufenes Bild an.
Beispiel
Im folgenden Codebeispiel wird das Überschreiben der Render-Methode in einem benutzerdefinierten Serversteuerelement veranschaulicht, sodass der AdRotator eine zufällig ausgewählte Werbung aus einer XML-Datei mit einer Verknüpfung und einem Bild anzeigt.
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB.Controls" Assembly="Samples.AspNet.VB" %>
<%@ Page Language="VB" AutoEventWireup="True" %>
<HTML>
<HEAD>
<title>Custom AdRotator - Render - VB.NET Example</title>
</HEAD>
<body>
<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" />
</form>
</body>
</HTML>
...
<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.href = navigateUrl
bannerLink.Target = Me.Target
bannerLink.AccessKey = Me.AccessKey
bannerLink.Enabled = Me.Enabled
bannerLink.TabIndex = Me.TabIndex
bannerLink.RenderBeginTag(writer)
' Create and render a new Image Web control.
Dim bannerImage As New System.Web.UI.WebControls.Image
If ControlStyleCreated Then
bannerImage.ApplyStyle(Me.ControlStyle)
End If
bannerImage.AlternateText = alternateText
bannerImage.ImageUrl = imageUrl
bannerImage.ToolTip = Me.ToolTip
bannerImage.RenderControl(writer)
bannerLink.RenderEndTag(writer)
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
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls" Assembly="Samples.AspNet.CS" %>
<%@ Page Language="C#" AutoEventWireup="True" %>
<HTML>
<HEAD>
<title>Custom AdRotator - Render - C# Example</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<h3>Custom AdRotator - Render - C# Example</h3>
<aspSample:CustomADRotatorRender
id="CustomAdRotator1"
runat="server"
Target="_blank"
AdvertisementFile="~/App_Data/Ads.xml" />
</form>
</body>
</HTML>
...
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.href = navigateUrl;
bannerLink.Target = this.Target;
bannerLink.AccessKey = this.AccessKey;
bannerLink.Enabled = this.Enabled;
bannerLink.TabIndex = this.TabIndex;
bannerLink.RenderBeginTag(writer);
// Create and render a new Image Web control.
System.Web.UI.WebControls.Image bannerImage = new System.Web.UI.WebControls.Image();
if (ControlStyleCreated)
{
bannerImage.ApplyStyle(this.ControlStyle);
}
bannerImage.AlternateText = alternateText;
bannerImage.ImageUrl = imageUrl;
bannerImage.ToolTip = this.ToolTip;
bannerImage.RenderControl(writer);
bannerLink.RenderEndTag(writer);
}
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();
}
}
}
}
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.JSL.Controls" Assembly="Samples.AspNet.JSL" %>
<%@ Page Language="VJ#" AutoEventWireup="True" %>
<HTML>
<HEAD>
<title>Custom AdRotator - Render - VJ# Example</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<h3>Custom AdRotator - Render - VJ# Example</h3>
<aspSample:CustomADRotatorRender
id="CustomAdRotator1"
runat="server"
Target="_blank"
AdvertisementFile="~/App_Data/Ads.xml" />
</form>
</body>
</HTML>
...
package Samples.AspNet.JSL.Controls;
import System.Collections.*;
///** @attribute System.Security.Permissions.PermissionSet(
// System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")
//d */
public class CustomADRotatorRender extends System.Web.UI.WebControls.AdRotator
{
private String applicationCachePrefix = "CustomAdRotatorCache: ";
protected void Render(System.Web.UI.HtmlTextWriter writer)
{
String navigateUrl = "";
String imageUrl = "";
String alternateText = "";
// If the value for the Advertisement File is not empty.
if (this.get_AdvertisementFile().get_Length() > 0) {
// Get a random ad.
GetRandomAd(imageUrl, navigateUrl, alternateText);
}
// Create and render a new HyperLink Web control.
System.Web.UI.WebControls.HyperLink bannerLink =
new System.Web.UI.WebControls.HyperLink();
IEnumerator myEnum = this.get_Attributes().get_Keys().GetEnumerator();
while (myEnum.MoveNext()) {
String key = myEnum.get_Current().ToString();
bannerLink.get_Attributes().set_Item(key,
this.get_Attributes().get_Item(key));
}
if (this.get_ID() != null && this.get_ID().get_Length() > 0) {
bannerLink.set_ID(this.get_ClientID());
}
bannerLink.set_href(navigateUrl);
bannerLink.set_Target(this.get_Target());
bannerLink.set_AccessKey(this.get_AccessKey());
bannerLink.set_Enabled(this.get_Enabled());
bannerLink.set_TabIndex(this.get_TabIndex());
bannerLink.RenderBeginTag(writer);
// Create and render a new Image Web control.
System.Web.UI.WebControls.Image bannerImage =
new System.Web.UI.WebControls.Image();
if (get_ControlStyleCreated()) {
bannerImage.ApplyStyle(this.get_ControlStyle());
}
bannerImage.set_AlternateText(alternateText);
bannerImage.set_ImageUrl(imageUrl);
bannerImage.set_ToolTip(this.get_ToolTip());
bannerImage.RenderControl(writer);
bannerLink.RenderEndTag(writer);
} //Render
private void GetRandomAd(String imageUrl, String navigateUrl,
String alternateText)
{
// Default output parameters values.
imageUrl = "";
navigateUrl = "";
alternateText = "";
// Try to get the Ads DataSet from the ASP.NET cache.
String physicalPath = MapPathSecure(this.get_AdvertisementFile());
String fileKey = applicationCachePrefix + physicalPath;
System.Web.Caching.Cache cache =
System.Web.HttpContext.get_Current().get_Cache();
System.Data.DataSet dataSet =
(System.Data.DataSet)cache.get_Item(fileKey);
// 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.get_Tables().get_Item(0).get_Rows().get_Count();
if (totalAds > 0) {
// Select a random Ad.
System.Random random = new System.Random();
int selectedAdIndex = random.Next(totalAds);
// Output the random Ad's values.
imageUrl = dataSet.get_Tables().get_Item(0).get_Rows().
get_Item(selectedAdIndex).get_ItemArray().get_Item(0).
ToString();
navigateUrl = dataSet.get_Tables().get_Item(0).get_Rows().
get_Item(selectedAdIndex).get_ItemArray().get_Item(1).
ToString();
alternateText = dataSet.get_Tables().get_Item(0).get_Rows().
get_Item(selectedAdIndex).get_ItemArray().get_Item(2).
ToString();
}
} //GetRandomAd
} //CustomADRotatorRender
Plattformen
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
AdRotator-Klasse
AdRotator-Member
System.Web.UI.WebControls-Namespace
System.Web.UI.HtmlTextWriter
OnPreRender