Custom Image Control
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
}
}
Filed under: ASP.NET, ASP.NET Controls | 2 Comments
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
HAHAAAA
WSalam,
Thanks me fine and so far this is been a good experience with Macrosoft.
and Happy to work without IIN
hahah