When working on web projects there is a common requirement is to show flash files as a banner. Html Object tag allows you to show flash files but its a core html tag, what if you want to add have this functionality on server side? Here is the simple solution

using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Web;
using System;

namespace BitLogix.Web.Controls
{
   public class Image :System.Web.UI.WebControls.Image 
    {

       protected override void Render(System.Web.UI.HtmlTextWriter writer)
       {
           if (ImageUrl.Length > 0)
           {
              
               StringBuilder html = new StringBuilder();
              
               if (ImageUrl.ToLower().EndsWith( “.swf”) )
                   Type = FileType.Flash;
               else if (ImageUrl.ToLower().EndsWith(“.html”) || ImageUrl.ToLower().EndsWith(“.htm”) )
                   Type = FileType.Html;
               else if(ImageUrl.ToLower().EndsWith(“</object>”))
                   Type = FileType.Embeded;
               else
                   Type = FileType.Image;
              

               if (Type == FileType.Flash)
               {
                         
                long RandomNumber = DateTime.Now.Ticks ;
                html.Append(“<object classid=’clsid:D27CDB6E-AE6D-11cf-96B8-444553540000′”);
                html.Append(string.Format( “codebase=’http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0′ width=’{0}’”,Width.ToString()));

                if(Height.IsEmpty ==false)
                    html.Append(” height= ” + Height.ToString() );
                html.Append( string.Format(“> <param name=’movie’ value=’{0}?dummyVar={1}’>”,ImageUrl ,RandomNumber));

                html.Append(” <param name=’quality’ value=’high’>”);

                html.Append( string.Format(“<embed src=’{0}?dummyVar={1}’ quality=’high’”,ImageUrl ,RandomNumber));

                html.Append(“  pluginspage=’http://www.macromedia.com/go/getflashplayer’ type=’application/x-shockwave-flash’></embed></object>”);

                writer.Write(html.ToString());
               }
               else if (Type == FileType.Html)
               {
                   html.Append(“<IFRAME src=’” + ImageUrl + “‘ align=’top’ border =’0px’ frameborder =’0′ scrolling = ‘no’ width =’100%’ marginheight=’0px’ marginwidth =’0px’ noresize = ‘noresize’>”);

                   html.Append(“</IFRAME>”);
                   writer.Write(html);
               }
               else if (Type == FileType.Embeded)
               {
                   writer.Write(ImageUrl);
               }
               else
               {

                   if (NavigateUrl.Trim().Length > 0)
                       writer.Write(“<A href=’” + NavigateUrl + “‘ target =’” + Target + “‘  >”);

                   base.Render(writer);

                   if (NavigateUrl.Trim().Length > 0)
                       writer.Write(“</A>”);
               }
           
           }

       }

       /// <summary>
       /// URL to redirect when clicked
       /// </summary>
       public string NavigateUrl
       {
           get
           {
               object obj = ViewState["NavigateUrl"];
               if (obj == null)
                   return string.Empty;
               return obj.ToString();
           }
           set { ViewState["NavigateUrl"] = value; }
       }
       /// <summary>
       /// URL Target
       /// </summary>
       public string Target
       {
           get
           {
               object obj = ViewState["Target"];
               if (obj == null)
                   return “_blank”;
               return obj.ToString();
           }
           set { ViewState["Target"] = value; }
       }
       /// <summary>
       ///File Type
       /// </summary>
       private  FileType  Type
       {
           get
           {
               object obj = ViewState["Type"];
               if (obj == null)
                   return  FileType.Image ;
               return (FileType) obj;
           }
           set { ViewState["Type"] = value; }
       }

    }

   public enum FileType
   {
      
       Image,
       Flash,
       Embeded,
       Html

   }
}



2 Responses to “Custom Image Control”  

  1. Salam,

    Hope you are doing great.
    How is your new job going at Macrosoft.

    Well in this manner you get yourself escape from IIN :) .

    Best Luck,
    Wajahat Abbas

  2. 2 safeery2k

    HAHAAAA

    WSalam,

    Thanks me fine and so far this is been a good experience with Macrosoft.

    and Happy to work without IIN :) hahah


Leave a Reply