如何保持一个持续的分数

本文关键字:一个 何保持 | 更新日期: 2023-09-27 18:02:16

我正在做一个迷你测试,我不知道如何去做一个运行分数,将更新用户提交测试后的当前分数。如果问题从错到对,分数可能会波动25分,反之亦然。

public partial class _Default : System.Web.UI.Page
{
private int totalScore = 0;
public void IncrementScore()
{
    totalScore += 25;
}
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        lblHeader.Text = "quiz not taken";
    }
    else
    {
        lblHeader.Text = "Score: " + totalScore;
    }
}
protected void Submit_Click(object sender, EventArgs e)
{
    /***************************************************************************/
    if (IsValid)
        if (txtAnswer.Text.Equals("primary", StringComparison.InvariantCultureIgnoreCase))
        {
            lblQuestionResult1.ForeColor = System.Drawing.Color.Green;
            lblQuestionResult1.Text = "Correct";
        }
        else
        {
            lblQuestionResult1.ForeColor = System.Drawing.Color.Red;
            lblQuestionResult1.Text = "Incorrect";
        }
    /***************************************************************************/
    if (ddList.SelectedItem.Text.Equals("M:N"))
    {
        lblQuestionResult2.ForeColor = System.Drawing.Color.Green;
        lblQuestionResult2.Text = "Correct";
    }
    else
    {
        lblQuestionResult2.ForeColor = System.Drawing.Color.Red;
        lblQuestionResult2.Text = "Incorrect";
    }
    /***************************************************************************/
    if (RadioButton4.Checked == true)
    {
        lblQuestionResult3.ForeColor = System.Drawing.Color.Green;
        lblQuestionResult3.Text = "Correct";
    }
    else
    {
        lblQuestionResult3.ForeColor = System.Drawing.Color.Red;
        lblQuestionResult3.Text = "Incorrect";
    }
    /***************************************************************************/
    lblQuestionResult4.ForeColor = System.Drawing.Color.Red;
    lblQuestionResult4.Text = "Incorrect";
    if (Answer2.Checked && Answer3.Checked && !Answer1.Checked && !Answer4.Checked)
    {
        lblQuestionResult4.ForeColor = System.Drawing.Color.Green;
        lblQuestionResult4.Text = "Correct";
    }
}
}

如何保持一个持续的分数

递增的方法
private int totalScore = 0;

将无法工作,因为您将为每个HTTP请求获得一个新的_Default实例。

你可以保持你的运行分数在Session

然而,我建议总是在需要时通过循环遍历答案和与每个答案相关的分数来重新计算总分。如果人们返回并更改答案(假设允许这样做),这简化了逻辑。

将其修改为如下内容:see, check syntax, was not using VS

保护无效Page_Load(对象发送者,EventArgs e){

if (!IsPostBack)
{
    lblHeader.Text = "quiz not taken";
}
else
{
    Session["TotalScore"] = ""+totalScore; //Storing it in a session
    lblHeader.Text = "Score: " + Session["TotalScore"];
}

}

//增量方法
if(Session["TotalScore"]!=null)
 { 
  totalScore += 25;
 } 
else
{
totalScore=int.Parse(Session["TotalScore"])+25;
}
相关文章: