.net 1.1 LinkButton代码 using System;using System.ComponentModel;using System.Drawing.Design;using System.Web;using System.Web.UI;using System.Web.Util;using System.Security.Permissions;using System.Web.UI.WebControls;namespace JxtLibrary.Controls{ public class LinkButton : WebControl, IPostBackEventHandler { private static readonly object EventClick = new object(); private static readonly object EventCommand = new object(); [Category("Action")] public event EventHandler Click { add { base.Events.AddHandler(EventClick, value); } remove { base.Events.RemoveHandler(EventClick, value); } } [Category("Action")] public event CommandEventHandler Command { add { base.Events.AddHandler(EventCommand, value); } remove { base.Events.RemoveHandler(EventCommand, value); } } public LinkButton() : base(HtmlTextWriterTag.A) { } internal static string GetClientValidatedPostback(Control control) { string postBackEventReference = control.Page.GetPostBackEventReference(control); return ("{if (typeof(Page_ClientValidate) != 'function' || Page_ClientValidate()) " + postBackEventReference + "} "); } protected override void AddAttributesToRender(HtmlTextWriter writer) { if (this.Page != null) { this.Page.VerifyRenderingInServerForm(this); } base.AddAttributesToRender(writer); if (this.Enabled && (this.Page != null)) { if (this.CausesValidation && (this.Page.Validators.Count > 0)) { writer.AddAttribute(HtmlTextWriterAttribute.Href, "javascript:" + GetClientValidatedPostback(this)); } else { writer.AddAttribute(HtmlTextWriterAttribute.Href, this.Page.GetPostBackClientHyperlink(this, "")); } } } protected override void AddParsedSubObject(object obj) { if (this.HasControls()) { base.AddParsedSubObject(obj); } else if (obj is LiteralControl) { this.Text = ((LiteralControl)obj).Text; } else { string text = this.Text; if (text.Length != 0) { this.Text = string.Empty; base.AddParsedSubObject(new LiteralControl(text)); } base.AddParsedSubObject(obj); } } protected override void LoadViewState(object savedState) { if (savedState != null) { base.LoadViewState(savedState); string str = (string)this.ViewState["Text"]; if (str != null) { this.Text = str; } } } protected virtual void OnClick(EventArgs e) { EventHandler handler = (EventHandler)base.Events[EventClick]; if (handler != null) { handler(this, e); } } protected virtual void OnCommand(CommandEventArgs e) { CommandEventHandler handler = (CommandEventHandler)base.Events[EventCommand]; if (handler != null) { handler(this, e); } base.RaiseBubbleEvent(this, e); } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if ((this.Page != null) && this.Enabled) { //this.Page.RegisterPostBackScript(); } } protected override void RenderContents(HtmlTextWriter writer) { if (this.HasControls()) { base.RenderContents(writer); } else { writer.Write(this.Text); } } void IPostBackEventHandler.RaisePostBackEvent(string eventArgument) { if (this.CausesValidation) { this.Page.Validate(); } this.OnClick(new EventArgs()); this.OnCommand(new CommandEventArgs(this.CommandName, this.CommandArgument)); } [Category("Behavior"), Bindable(false), DefaultValue(true)] public bool CausesValidation { get { object b = ViewState["CausesValidation"]; return ((b == null) ? true : (bool)b); } set { ViewState["CausesValidation"] = value; } } [Bindable(true), Category("Behavior"), DefaultValue("")] public string CommandArgument { get { string s = (string)ViewState["CommandArgument"]; return ((s == null) ? String.Empty : s); } set { ViewState["CommandArgument"] = value; } } [Category("Behavior"), DefaultValue("")] public string CommandName { get { string s = (string)ViewState["CommandName"]; return ((s == null) ? String.Empty : s); } set { ViewState["CommandName"] = value; } } [PersistenceMode(PersistenceMode.InnerDefaultProperty), Bindable(true), Category("Appearance"), DefaultValue("")] public virtual string Text { get { object o = ViewState["Text"]; return ((o == null) ? String.Empty : (string)o); } set { if (HasControls()) { Controls.Clear(); } ViewState["Text"] = value; } } }}