0

私のWebページはサーバー上のテーブルレコードを更新します。「count」は、クイズのスコアをカウントするint変数です。その値はWebページに正しく表示されますが、データベースに保存されたレコードは、すべてのレコードに対して値「0」を示します。

int count = 0;

protected void Button1_Click(object sender, EventArgs e)

{

count++; // for each correct answer

} 
protected void submitScore_Click(object sender, EventArgs e)

{
var check = (from i in dc.QuizTakens where (i.username ==Context.User.Identity.Name && i.SubName == "Sports" && i.Lev=="Easy")select i).SingleOrDefault();


if (check == null)
{
    QuizTaken q = new QuizTaken();
    q.SubName = "Sports";
    q.Lev = "Easy";
    q.username = Context.User.Identity.Name;
    q.score_max = count;
    dc.QuizTakens.InsertOnSubmit(q);
    dc.SubmitChanges();

 }
 }

このテーブルの主キーは、SubName、Lev、QIdです。レコード全体がテーブルに追加されますが、Webページにscore_maxの正しい値を表示できたとしても、score_maxの値は常に0です。

4

1 に答える 1

2

あなたが示したことから、あなたcountは単なるクラスフィールドであり、ViewState他のページレベルのストレージに支えられていません。つまり0、すべてのページのポストバックにあり、db に書き込まれます。

ページのロード間で値を保存する必要がありますViewState

于 2012-08-02T14:10:53.550 に答える