HtmlAnchor.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. /* System.Web.UI.HtmlControls
  2. * Authors
  3. * Leen Toelen ([email protected])
  4. */
  5. using System;
  6. using System.ComponentModel;
  7. using System.Web;
  8. using System.Web.UI;
  9. namespace System.Web.UI.HtmlControls{
  10. [DefaultEvent("ServerClick")]
  11. public class HtmlAnchor : HtmlContainerControl, IPostBackEventHandler{
  12. private static readonly object EventServerClick = new object ();
  13. public HtmlAnchor(): base("a"){}
  14. protected override void OnPreRender (EventArgs e)
  15. {
  16. base.OnPreRender (e);
  17. if (Page != null && Events [EventServerClick] != null)
  18. Page.RequiresPostBackScript ();
  19. }
  20. protected virtual void OnServerClick(EventArgs e){
  21. EventHandler handler;
  22. handler = (EventHandler) Events[EventServerClick];
  23. if(handler != null) handler.Invoke(this, e);
  24. }
  25. protected override void RenderAttributes(HtmlTextWriter writer){
  26. if ( Events[EventServerClick] != null){
  27. Attributes.Remove("href");
  28. base.RenderAttributes(writer);
  29. writer.WriteAttribute("href", Page.GetPostBackClientHyperlink(this,String.Empty));
  30. }
  31. else{
  32. PreProcessRelativeReference(writer,"href");
  33. base.RenderAttributes(writer);
  34. }
  35. }
  36. void System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(string eventArgument){
  37. OnServerClick(EventArgs.Empty);
  38. }
  39. [WebCategory("Action")]
  40. [WebSysDescription("Fires when the control is clicked.")]
  41. public event EventHandler ServerClick{
  42. add{
  43. Events.AddHandler(EventServerClick, value);
  44. }
  45. remove{
  46. Events.RemoveHandler(EventServerClick, value);
  47. }
  48. }
  49. [DefaultValue("")]
  50. [WebCategory("Action")]
  51. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  52. public string HRef{
  53. get{
  54. string attr = Attributes["href"];
  55. if (attr != null) return attr;
  56. return String.Empty;
  57. }
  58. set{
  59. Attributes["href"] = AttributeToString(value);
  60. }
  61. }
  62. [DefaultValue("")]
  63. [WebCategory("Navigation")]
  64. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  65. public string Name{
  66. get{
  67. string attr = Attributes["name"];
  68. if (attr != null) return attr;
  69. return String.Empty;
  70. }
  71. set{
  72. Attributes["name"] = AttributeToString(value);
  73. }
  74. }
  75. [DefaultValue("")]
  76. [WebCategory("Navigation")]
  77. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  78. public string Target{
  79. get{
  80. string attr = Attributes["target"];
  81. if (attr != null) return attr;
  82. return String.Empty;
  83. }
  84. set{
  85. Attributes["target"] = AttributeToString(value);
  86. }
  87. }
  88. [DefaultValue("")]
  89. [WebCategory("Appearance")]
  90. [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
  91. public string Title{
  92. get{
  93. string attr = Attributes["title"];
  94. if (attr != null) return attr;
  95. return String.Empty;
  96. }
  97. set{
  98. Attributes["title"] = AttributeToString(value);
  99. }
  100. }
  101. } // class HtmlAnchor
  102. } // namespace System.Web.UI.HtmlControls