所以我遇到了一個.aspx頁面和一些服務器端代碼的問題,我得到了意想不到的結果。C#.Net變量意外重新啓動
這個頁面的目標很簡單,有5個單選按鈕和一個帶有服務器端onclick函數的按鈕。這個想法是用戶選擇5個單選按鈕中的1個,然後點擊按鈕。點擊按鈕後,我驗證(不使用表單驗證,因爲我想要一種不同的感覺)檢查按鈕,然後將選定的選項存儲在數據庫中。
由於事實單選按鈕的數量可能在未來,我決定嘗試和單選按鈕的抽象數更改爲使其更容易在我的自我改變未來。
因此,在我的服務器端代碼的頂部,我創建了一個可能的選項列表。
然後我有一個registerVote函數,它在一個單選按鈕對象,以及一些搶從配置文件中的設置。我將這兩個值放入一個包裝類中,然後將它們添加到可能的選項列表中。
最後按下提交按鈕的時候,我經歷了所有可能的選項進行迭代,看看哪一個被選中,並抓住它的關聯值。
public partial class VotePanel : System.Web.UI.Page
{
List<VoteOption> voteOptions = new List<VoteOption>();
public string registerVote(RadioButton newRadioButton, int voteOption)
{
voteOptions.Add(new VoteOption(newRadioButton, voteOption));
return ConfigurationManager.AppSettings["vote_option_" + voteOption];
}
protected void Submit_Click(object sender, EventArgs e)
{
//Check vote
string vote_value = "";
bool someButtonChecked = false;
foreach (VoteOption vo in voteOptions)
{
if (!someButtonChecked && vo.button.Checked)
{
vote_value = vo.movie;
someButtonChecked = true;
}
}
//....
}
}
class VoteOption
{
public RadioButton button;
public int vote_value;
public VoteOption(RadioButton r, int v)
{
button = r;
vote_value= v;
}
}
我在頁面中使用的代碼添加一個單選按鈕,看起來像這樣
<的asp:單選按鈕ID = 「RadioButton1」 RUNAT = 「服務器」 組名= 「投票」 的風格=「的位置是:相對; top:3px;「/> <%= registerMovie(RadioButton1,1)%>
現在爲我遇到的問題。每當提交按鈕被點擊時,列表的計數爲零,看起來像已經重新初始化。我通過在registerVote方法中返回列表計數來確認值正在被添加,並且確實正在添加對象,但出於某種原因,提交功能不可用。
現在像這樣的頁面上的變量不應該重新初始化?我也測試了一個字符串,它沒有重置,並且可用於提交按鈕。我所做的是定義一個類變量字符串time = DateTime.Now.Ticks.toString();並顯示點擊提交按鈕後,時間總是相同的,無論我點擊了多少次。
那麼,爲什麼我的列表將重新初始化,但不是一個字符串?有任何想法嗎?
你什麼時候打電話給'registerVote'?你可以發佈該代碼嗎? – jscharf 2009-08-26 15:44:57