我在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”。有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
似乎您的问题可能存在于分配会话变量'referer'的任何地方。
我认为当你真正需要MyControl.ID(它没有所有与命名容器相关的goo)时,你正在分配MyControl.UniqueID。
Read this详细了解这一切是如何运作的。