지금 개발중인 웹 응용 프로그램에는 퀴즈 엔진이라는 것이 있습니다.이 퀴즈 엔진은 사용자에게 하나 이상의 질문으로 구성된 짧은 퀴즈를 제공합니다. 이제 퀴즈를 풀거나 답하는 데 문제가 있습니다. 사용자가 퀴즈를 끝내고 결과 페이지로 이동하여 퀴즈 페이지로 돌아가서 같은 질문에 답하면 두 가지 결과가 나옵니다. 왜 그럴지!사용자가 퀴즈의 질문 중 하나에 대한 대답을 어떻게 바꿀 수있게 할 수 있습니까?
간단히 말해서 같은 질문에 여러 번 응답해도 여러 항목이 만들어서는 안됩니다.
퀴즈 엔진을 만들 때 나는 ASP.NET 웹 사이트에서 퀴즈 엔진 용 Toturial을 사용하여 내가 가진 것을 만들었습니다.
내 코드 숨김 :protected void nextButton_Click(object sender, EventArgs e)
{
// Save off previous answers
System.Data.DataRowView dr = (System.Data.DataRowView)questionDetails.DataItem;
// Create Answer object to save values
Answer a = new Answer();
a.QuestionID = dr["QuestionOrder"].ToString();
a.CorrectAnswer = dr["CorrectAnswer"].ToString();
a.UserAnswer = answerDropDownList.SelectedValue.ToString();
ArrayList al = (ArrayList)Session["AnswerList"];
al.Add(a);
Session.Add("AnswerList", al);
if (questionDetails.PageIndex == questionDetails.PageCount - 1)
{
// Go to evaluate answers
Response.Redirect("Results.aspx");
}
else
{
questionDetails.PageIndex++;
}
if (questionDetails.PageIndex == questionDetails.PageCount - 1)
{
nextButton.Text = "Finished";
}
}
나는 사용자가 자신의 대답을 변경할 수 있도록하는 방법을 이제 (또는 이동 :이 답변을 저장을 담당하는 코드가
답변 한 질문 중 하나로 돌아가십시오)이 새로운 대답은 이전 답변을 대체합니다 (사용자가 동일한 질문을 두 번 대답 한 것으로 간주되지 않음). 그렇게하는 방법?
편집 :
다음 코드는 결과를 저장하는 책임이있다 : 당신이 AnswerList에 답을 추가하기 전에
다음은을 시도 할 수있는
resultGrid.DataSource = al;
resultGrid.DataBind();
// Save the results into the database.
if (IsPostBack == false)
{
// Calculate score
double questions = al.Count;
double correct = 0.0;
for (int i = 0; i < al.Count; i++)
{
Answer a = (Answer)al[i];
if (a.Result == Answer.ResultValue.Correct)
correct++;
}
double score = (correct/questions) * 100;
string username = HttpContext.Current.User.Identity.Name.ToString().Replace("ARAMCO\\", "");
SqlDataSource userQuizDataSource = new SqlDataSource();
userQuizDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["testConnectionString"].ToString();
userQuizDataSource.InsertCommand = "INSERT INTO [UserQuiz] ([QuizID], [DateTimeComplete], [Score], [Username]) VALUES (@QuizID, @DateTimeComplete, @Score, @Username)";
userQuizDataSource.InsertParameters.Add("QuizID", Session["QuizID"].ToString());
userQuizDataSource.InsertParameters.Add("DateTimeComplete", DateTime.Now.ToString());
userQuizDataSource.InsertParameters.Add("Score", score.ToString());
userQuizDataSource.InsertParameters.Add("Username", username);
int rowsAffected = userQuizDataSource.Insert();
if (rowsAffected == 0)
{
// Let's just notify that the insertion didn't
// work, but let' s continue on ...
errorLabel.Text = "There was a problem saving your quiz results into our database. Therefore, the results from this quiz will not be displayed on the list on the main menu.";
}
}
사용자의 답변 목록을 어떻게 저장하고 있습니까? – V4Vendetta
질문에 대한 대답으로 내 질문을 편집했습니다. – user1093651