【发布时间】:2009-08-26 15:29:19
【问题描述】:
所以我遇到了一个 .aspx 页面和一些服务器端代码的问题,我得到了意想不到的结果。
这个页面的目标很简单,有5个单选按钮和一个带有服务器端onclick功能的按钮。这个想法是用户选择 5 个单选按钮中的 1 个,然后单击该按钮。单击按钮后,我验证(不使用表单验证,因为我想要不同的感觉)检查了按钮,然后将选定的选项存储在数据库中。
由于单选按钮的数量将来可能会发生变化,我决定尝试抽象出单选按钮的数量,以便我自己在将来更容易更改。
因此,我在服务器端代码的顶部创建了一个可能选项列表。
然后我有一个 registerVote 函数,它接收一个 RadioButton 对象,以及一个从配置文件中获取设置的数字。我将这两个值放入一个包装类中,然后将它们添加到可能的选项列表中。
最后,当提交按钮被按下时,我会遍历所有可能的选项以查看哪个选项被选中,并获取其相关值。
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;
}
}
我在页面中用于添加单选按钮的代码如下所示
现在解决我遇到的问题。每当单击提交按钮时,列表的计数为零,并且看起来已经重新初始化。我通过在 registerVote 方法中返回列表计数来验证正在添加值,并且确实正在添加对象,但由于某种原因对 Submit 函数不可用。
现在这样的页面上的变量不应该重新初始化,对吗?我还测试了一个字符串,它没有重置并且可用于提交按钮。我所做的是定义一个类变量 string time = DateTime.Now.Ticks.toString();并显示在单击提交按钮后,无论我单击了多少次,时间总是相同的。
那么为什么我的 List 会重新初始化,而不是字符串?有什么想法吗?
【问题讨论】:
-
你什么时候打电话给'registerVote'?你能把那个代码贴出来吗?