1
我有一個選擇框在一個asp.net形式如下所示:訪問HTML表單元素與RUNAT =服務器
<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>
這樣我可以設置會話變量與過程相同的名稱的.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」。有沒有什麼辦法解決這一問題?
'Session []'不會將它從請求中拉出來,你在哪裏得到表單變量? – 2010-08-03 23:57:12
我正在嘗試使用非常基本的HTML來做到這一點。我發送到另一個將執行處理的頁面,process.aspx,其代碼將根據Request.Form鍵設置會話變量。 – 2010-08-04 00:05:27
這是一個非常令人困惑的問題傢伙,但我可以看到你在嘗試。 :)我會在你的session.add行上放一個斷點,然後在調試模式下進行......我認爲在你調用form [key]的時候,這個值肯定是錯誤的。 – 2010-08-04 00:16:33