次の方法で共有


AdRotator.Render メソッド

クライアントに AdRotator コントロールを表示します。

名前空間: System.Web.UI.WebControls
アセンブリ: System.Web (system.web.dll 内)

構文

'宣言
Protected Friend Overrides Sub Render ( _
    writer As HtmlTextWriter _
)
'使用
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
)
適用できません。

パラメータ

解説

OnPreRender で選択した広告から取得されたイメージを表示します。

使用例

カスタム サーバー コントロールの Render メソッドをオーバーライドし、XML ファイルのランダムな広告にリンクとイメージを付けて AdRotator に表示されるようにします。

<%@ 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"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <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" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <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" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <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

プラットフォーム

Windows 98,Windows Server 2000 SP4,Windows CE,Windows Millennium Edition,Windows Mobile for Pocket PC,Windows Mobile for Smartphone,Windows Server 2003,Windows XP Media Center Edition,Windows XP Professional x64 Edition,Windows XP SP2,Windows XP Starter Edition

Microsoft .NET Framework 3.0 は Windows Vista,Microsoft Windows XP SP2,および Windows Server 2003 SP1 でサポートされています。

バージョン情報

.NET Framework

サポート対象 : 3.0,2.0,1.1,1.0

参照

関連項目

AdRotator クラス
AdRotator メンバ
System.Web.UI.WebControls 名前空間
System.Web.UI.HtmlTextWriter
OnPreRender

その他の技術情報

AdRotator Web サーバー コントロール