2012-08-01 125 views
0

我的网页更新服务器上的表记录。 “count”是一个计数测验分数的int变量。它的值正确显示在网页上,但保存在数据库中的记录对所有记录显示值“0”。数据库中的int值未更新

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。整个记录被添加到表中,但score_max的值始终为0,即使我能够在网页上显示score_max的正确值。

+0

运行此代码时'c'的值是多少?如果记录已经存在会发生什么?你没有更新任何地方 – Basic 2012-08-01 12:38:19

+0

我很抱歉,c是“count”。我已经编辑了代码现在 – 2012-08-01 12:39:12

+0

计数从哪里来?你能显示那部分代码吗? – 2012-08-01 13:04:50

回答

2

根据您所示,您的count只是一个班级字段,不受ViewState或其他页面级存储的支持。这意味着它将在每个回发页上的0,并且因为它将被写入到db。

您需要在页面加载之间存储它的值,很可能在ViewState之间。

+0

{// 代码,我试图通过以下方式既ViewState的和Session: 保护无效的Page_Load(){ 的ViewState [”分数“] = 0; .... } protected void Button1_click() count ++; //对于每个正确答案 .... ViewState [“score”] = count; } protected void submitScore_Click() { ... dc.score_max = System.Convert.ToInt16(ViewState [“score”]); } 但问题仍然存在! – 2012-08-02 14:29:17

+0

当然是的,因为你重置了每个'Page_Load'上的'ViewState'。 – 2012-08-02 14:32:53

+0

非常感谢您,将它保存在我的button1_click()函数中。让我知道如果你看到任何其他事情错了! – 2012-08-02 14:54:44