使用runat = server访问html表单元素

时间:2010-08-03 23:51:51

标签: asp.net

我在asp.net表单中有一个选择框,如下所示:

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

这样我可以在Process.aspx中设置一个具有相同名称的会话变量:

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]);
    }
}

,然后在用户稍后返回时设置选择框的值,如下所示:

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

问题是当表单发送到服务器时,表单键变为“ctl00 $ content $ refererSelect”。有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

似乎您的问题可能存在于分配会话变量'referer'的任何地方。

我认为当你真正需要MyControl.ID(它没有所有与命名容器相关的goo)时,你正在分配MyControl.UniqueID。

Read this详细了解这一切是如何运作的。