0

ミニテストを作成していますが、ユーザーがテストを送信した後に現在のスコアを更新する実行中のスコアを作成する方法がわかりません。質問が間違ったものから正しいものへ、またはその逆の場合に応じて、スコアは 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";
    }
}
}
4

2 に答える 2

2

インクリメントのアプローチ

private int totalScore = 0;

_DefaultHTTP リクエストごとにの新しいインスタンスを取得するため、機能しません。

でランニングスコアをキープできますSession

ただし、代わりに、必要に応じて回答と各回答に関連付けられたスコアをループすることにより、必要に応じて合計スコアを常に再計算することをお勧めします。これにより、人々が戻って回答を変更した場合のロジックが簡素化されます (それが許可されている場合)。

于 2013-03-05T18:15:04.650 に答える
0

見て、構文をチェックして、VSを使用していなかったようなものに変更します

protected void 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;
}
于 2013-03-05T18:53:58.317 に答える