2 // System.Web.UI.WebControls.HyperLink.cs
5 // Gaurav Vaish (gvaish@iitk.ac.in)
6 // Gonzalo Paniagua Javier (gonzalo@ximian.com)
7 // Andreas Nahr (ClassDevelopment@A-SoftTech.com)
9 // (c) 2002 Ximian, Inc. (http://www.ximian.com)
10 // (C) Gaurav Vaish (2002)
11 // (C) 2003 Andreas Nahr
16 using System.Web.UI;
\r
17 using System.ComponentModel;
18 using System.ComponentModel.Design;
\r
20 namespace System.Web.UI.WebControls
\r
22 [DefaultProperty("Text")]
\r
23 [ControlBuilder(typeof(HyperLinkControlBuilder))]
\r
24 [Designer("System.Web.UI.Design.WebControls.HyperLinkDesigner, " + Consts.AssemblySystem_Design, typeof (IDesigner))]
\r
25 [DataBindingHandler("System.Web.UI.Design.HyperLinkDataBindingHandler, " + Consts.AssemblySystem_Design)]
\r
26 [ParseChildren(false)]
\r
27 [ToolboxData("<{0}:HyperLink runat=\"server\">HyperLink</{0}:HyperLink>")]
\r
28 public class HyperLink: WebControl
\r
32 public HyperLink(): base(HtmlTextWriterTag.A)
\r
36 [DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
37 [Editor ("System.Web.UI.Design.ImageUrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
38 [WebSysDescription ("The URL to the image file.")]
\r
39 public virtual string ImageUrl
\r
43 object o = ViewState["ImageUrl"];
\r
46 return String.Empty;
\r
50 ViewState["ImageUrl"] = value;
\r
54 [DefaultValue (""), Bindable (true), WebCategory ("Navigation")]
55 [Editor ("System.Web.UI.Design.UrlEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
56 [WebSysDescription ("The URL to navigate to.")]
\r
57 public string NavigateUrl
\r
61 object o = ViewState["NavigateUrl"];
\r
64 return String.Empty;
\r
68 ViewState["NavigateUrl"] = value;
\r
72 [DefaultValue (""), Bindable (true), WebCategory ("Navigation")]
73 [TypeConverter (typeof (TargetConverter))]
74 [WebSysDescription ("The target frame in which the navigation target should be opened.")]
\r
75 public string Target
\r
79 object o = ViewState["Target"];
\r
82 return String.Empty;
\r
86 ViewState["Target"] = value;
\r
90 [DefaultValue (""), Bindable (true), WebCategory ("Appearance")]
91 [PersistenceMode (PersistenceMode.InnerDefaultProperty)]
92 [WebSysDescription ("The text that should be shown on this HyperLink.")]
\r
93 public virtual string Text
\r
96 object o = ViewState ["Text"];
\r
100 return String.Empty;
\r
105 ViewState["Text"] = value;
\r
110 string InternalText
\r
112 get { return Text; }
\r
113 set { ViewState["Text"] = value; }
\r
116 protected override void AddAttributesToRender(HtmlTextWriter writer)
\r
118 base.AddAttributesToRender(writer);
\r
119 if(NavigateUrl.Length > 0)
\r
121 string url = ResolveUrl (NavigateUrl);
122 writer.AddAttribute(HtmlTextWriterAttribute.Href, url);
\r
124 if(Target.Length > 0)
\r
126 writer.AddAttribute(HtmlTextWriterAttribute.Target, Target);
\r
130 protected override void AddParsedSubObject(object obj)
\r
134 base.AddParsedSubObject(obj);
\r
137 if(obj is LiteralControl)
\r
139 // This is a hack to workaround the behaviour of the code generator, which
\r
140 // may split a text in several LiteralControls if there's a special character
\r
141 // such as '<' in it.
\r
143 Text = ((LiteralControl)obj).Text;
\r
146 InternalText += ((LiteralControl)obj).Text;
\r
152 if(Text.Length > 0)
\r
154 base.AddParsedSubObject(new LiteralControl (Text));
\r
155 Text = String.Empty;
\r
157 base.AddParsedSubObject (obj);
\r
160 protected override void LoadViewState(object savedState)
\r
162 if(savedState != null)
\r
164 base.LoadViewState(savedState);
\r
165 object o = ViewState["Text"];
\r
171 protected override void RenderContents(HtmlTextWriter writer)
\r
173 if(ImageUrl.Length > 0)
\r
175 Image img = new Image();
\r
176 img.ImageUrl = ResolveUrl(ImageUrl);
\r
177 if(ToolTip.Length > 0)
\r
178 img.ToolTip = ToolTip;
\r
179 if(Text.Length > 0)
\r
180 img.AlternateText = Text;
\r
181 img.RenderControl(writer);
\r
186 base.RenderContents(writer);
\r
189 writer.Write(Text);
\r