2010-08-03 38 views
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」。有沒有什麼辦法解決這一問題?

+0

'Session []'不會將它從請求中拉出來,你在哪裏得到表單變量? – 2010-08-03 23:57:12

+0

我正在嘗試使用非常基本的HTML來做到這一點。我發送到另一個將執行處理的頁面,process.aspx,其代碼將根據Request.Form鍵設置會話變量。 – 2010-08-04 00:05:27

+0

這是一個非常令人困惑的問題傢伙,但我可以看到你在嘗試。 :)我會在你的session.add行上放一個斷點,然後在調試模式下進行......我認爲在你調用form [key]的時候,這個值肯定是錯誤的。 – 2010-08-04 00:16:33

回答

1

似乎你的問題可能生活在會話變量'referer'分配的任何地方。

我想你實際上需要MyControl.ID(它沒有命名容器相關的所有命名咕)時分配MyControl.UniqueID。

Read this瞭解更多關於如何工作。