Accessing html form elements with runat=server
<p>I have a select box in an asp.net form like so:</p>

<pre><code>&lt;form action="Process.aspx" method="post"&gt;
  &lt;select  name="referer" id="refererSelect" runat=server&gt;
    &lt;option value=""&gt;Please select one ...&lt;/option&gt;
    &lt;option value="customer"&gt;Return Customer&lt;/option&gt;
    &lt;option value="referral"&gt;Client Referral&lt;/option&gt;
    &lt;option value="trade"&gt;Trade Show&lt;/option&gt;
    &lt;option value="search"&gt;Search Engine&lt;/option&gt;
    &lt;option value="ad"&gt;Advertisement&lt;/option&gt;
&lt;/select&gt;
</code></pre>

<p></p>

<p>This way I can set a session variable with the same name in Process.aspx:</p>

<pre><code>private static string[] keys = {"name", "email", "company", "budget", "referer", "services", "comment"};

protected void saveToSesh()
{
    System.Collections.Specialized.NameValueCollection form = Request.Form;
    foreach (string key in keys)
    {
        Session.Add(key, form[key]);
    }
}
</code></pre>

<p>, and then set the value of the select box when the user returns later like so:</p>

<pre><code>string referer = (string) Session["referer"];
foreach (ListItem i in refererSelect.Items)
    if (referer == i.Value)
        i.Selected = true;
</code></pre>

<p>The problem is when the form is sent to the server, the form key gets changed to "ctl00$content$refererSelect". Is there any way to fix this?</p>
