Итак, у меня возникла проблема со страницей .aspx и некоторым кодом на стороне сервера, где я получаю неожиданные результаты.
Цель этой страницы проста, есть 5 радиокнопок и кнопка с функцией щелчка на стороне сервера. Идея состоит в том, что пользователь выбирает 1 из 5 переключателей, а затем нажимает кнопку. После нажатия кнопки я проверяю (не используя проверку формы, потому что я хотел по-другому), что кнопка проверена, и затем сохраняю выбранную опцию в базе данных.
В связи с тем, что в будущем число переключателей может измениться, я решил попытаться абстрагироваться от количества переключателей, чтобы в будущем мне было легче менять свое имя.
Итак, в верхней части моего кода на стороне сервера я создал список возможных вариантов.
Затем у меня есть функция registerVote, которая принимает объект RadioButton, и число, чтобы получить настройку из файла конфигурации. Я добавляю эти 2 значения в класс-обертку, а затем добавляю их в список возможных опций.
Наконец, когда нажимается кнопка отправки, я перебираю все возможные варианты, чтобы увидеть, какой из них отмечен, и получаю соответствующее значение.
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;
}
}
Код, который я использую на странице для добавления переключателя, выглядит следующим образом
<% = RegisterMovie (RadioButton1,1)%>
Теперь о проблеме, с которой я сталкиваюсь. Всякий раз, когда нажимается кнопка отправки, список имеет счетчик нуля и выглядит так, как будто он был повторно инициализирован. Я подтвердил, что значения добавляются, возвращая счетчик списка в методе registerVote, и объекты действительно добавляются, но по какой-то причине недоступны для функции Submit.
Теперь переменные на такой странице не должны повторно инициализироваться, верно? Я также протестировал строку, и она не была сброшена и была доступна для кнопки «Отправить». Я определил переменную класса string time = DateTime.Now.Ticks.toString (); и показывал, что после нажатия кнопки «Отправить» время всегда было одинаковым, независимо от того, сколько раз я нажимал на нее.
Так почему мой список должен повторно инициализироваться, но не строка? Есть идеи?