我有以下代码:
protected void Page_Load(object sender, EventArgs e)
{
//get questions
List<Question> questions = Question.GetQuestionsForTesting();
//for each question
foreach (Question currQuestion in questions)
{
//display the questionAnswer control
QuestionAnswer newControl = (QuestionAnswer)LoadControl("~/Account/QuestionAnswer.ascx");
newControl.newQuestion = currQuestion;
questionAnswerPanel.Controls.Add(newControl);
}
}
protected void submitAnswers_Click(object sender, EventArgs e)
{
//for each control
foreach (QuestionAnswer questionAnswerControl in questionAnswerPanel.Controls)
{
//get ID of question and correct/incorrect
Tuple<Boolean, int> correctIncorrectANDquestionID = questionAnswerControl.isAnswerCorrect();
//save in DB
}
}
和
<asp:Panel runat="server" ID="questionAnswerPanel"></asp:Panel>
<asp:Button runat="server" ID="submitAnswers" OnClick="submitAnswers_Click" Text="Submit Answers"/>
当我单击submitAnswers按钮时,将调用页面加载,然后调用按钮事件。我需要一些方法来检查提交的答案,但我目前无法做到这一点,因为我的控件在回发中随着问题及其答案而消失。因此,当事件方法最终被调用时,我只是在没有用户输入的情况下从新问题中检查答案。
我已经查看了其他各种问题,但我找不到类似的问题。
答案 0 :(得分:2)
你可以在这里找到答案:Which control caused the postback?。但你应该使用!Page.IsPostback检查Page_Load事件。
答案 1 :(得分:1)
您可以在页面循环中的几个点重构您的操作。您可以在ASP.NET page life cycle explanation上阅读更多信息。
在您的情况下,我建议添加Page_PreRender步骤。添加将当前的Page_Load操作移动到它。
所以它会像: