Voici la classe qui représente le bouton en GET. Le bouton se désactivera automatiquement après le click. La classe hérite de WebControl pour avoir le support de la méthode CssClass. Si on avait pas besoin de CSS, on aurait pu hériter de Control.
public class ButtonGetJavascript : WebControl
{
    public string DestinationPath
    {
        get { return (string)ViewState["DestinationPath"]; }
        set { ViewState["DestinationPath"] = value; }
    }

    public string Text
    {
        get { return (string)ViewState["Text"]; }
        set { ViewState["Text"] = value; }
    }

    protected override void Render(HtmlTextWriter writer)
    {
        writer.AddAttribute(HtmlTextWriterAttribute.Type, "button");
        writer.AddAttribute(HtmlTextWriterAttribute.Value, this.Text, true);
        writer.AddAttribute(HtmlTextWriterAttribute.Id, this.UniqueID);
        writer.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID);
        writer.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass);
        writer.AddAttribute(HtmlTextWriterAttribute.Onclick, 
           "this.disabled=true;self.location.href='" + this.DestinationPath + "'");
        writer.RenderBeginTag(HtmlTextWriterTag.Input);
        writer.RenderEndTag();
    }
}
Voici le code ASP.NET pour avoir ce bouton ...
<form id="form1" runat="server">
<div>
    <cc1:ButtonGetJavascript ID="but1" runat="server" 
        DestinationPath="http://www.kame.net" Text="Kame !!" />
</div>
</form>