Why is my asp:Button posting back every other time?
<p>I have a user control that has only a text box and a button.  When I click the button the page posts back but the button does not appear in the AllKeys attribute of Request.Form.  Once the page loads, if I click the button again it does appear in the AllKeys attribute.</p>

<p>On the next attempt, the third click will not have the button, but the fourth click will have it.</p>

<p>I don't know what I am missing or how to approach this.  Why would my asp:Button only post back one every other click?</p>

<p>Control Code:</p>

<pre class="lang-html prettyprint-override"><code>&lt;%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SearchControl.ascx.cs" Inherits="controls.SearchControl" %&gt;
&lt;table style="margin: 0 auto"&gt;
   &lt;tr&gt;
     &lt;td style="vertical-align:middle"&gt;
        &lt;b&gt;Search ID&lt;/b&gt;&amp;nbsp;
        &lt;asp:TextBox ID="txtSearchID" AutoPostBack="true" runat="server" Width="100px"&gt;&lt;/asp:TextBox&gt;&amp;nbsp;
        &lt;asp:Button ID='btnLoadDetails' OnClick="Search" runat="server" Text='Load Details' /&gt;&amp;nbsp;
     &lt;/td&gt;
   &lt;/tr&gt;
&lt;/table&gt;
</code></pre>

<p>Control Code Behind:</p>

<pre class="lang-cs prettyprint-override"><code>    public event EventHandler onLoad;
    protected virtual void OnLoad(EventArgs e)
    {
        if (onLoad != null)
        {
            onLoad(this, e);
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if ( !IsPostBack )
        {
            if ( Request["searchID"] != null &amp;&amp; Conversion.StringToInt( Request["searchID"].ToString() ) &gt; 0 )
            {
                txtSearchID.Text = Request["searchID"].ToString();
            }
        }
        else
        {   // Used to see if teh button appears in Request.Form
            String test = Request.Form[btnLoadDetails.ClientID];
        }
    }


    protected void Search(object sender, System.EventArgs e)
    {
        if (txtShopperID.Text.Trim().Length &gt; 0)
        {
            OnLoad(new EventArgs());
        }
    }
</code></pre>

<p>Page Code:</p>

<pre class="lang-html prettyprint-override"><code>&lt;%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SearchPage.aspx.cs" Inherits="SearchPage" %&gt;    
&lt;%@ Register TagPrefix="search" TagName="searchControl" Src="controls/SearchControl.ascx" %&gt;

&lt;search:searchControl id="searchControl" OnLoad="btnSearch_Click" runat="server" /&gt;
&lt;br /&gt;
&lt;div id='divResultInformation' runat="server"&gt;&lt;/div&gt;
</code></pre>
