所以我遇到了一个.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