问题描述
求助大神,为什么在线考试模块不能抓取考试成绩?代码如下:usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Data.SqlClient;publicpartialclass_Default:System.Web.UI.Page{privateRadioButton[]testBtn1=newRadioButton[10];privateRadioButton[]testBtn2=newRadioButton[10];privateRadioButton[]testBtn3=newRadioButton[10];privateRadioButton[]testBtn4=newRadioButton[10];privatestaticint[]rightAns=newint[10];privateintscore=0;publicvoidPage_Load(objectsender,EventArgse){SqlConnectioncon=newSqlConnection("server=WANGSNOW;database=TestOnline;userid=sa;pwd=root");con.Open();SqlCommandcmd=newSqlCommand("selectmax(id)fromXZ_test",con);intmaxTestID=(int)cmd.ExecuteScalar();int[]testIDs=newint[10];Randomrand=newRandom();StringtestContent="";Stringans1="";Stringans2="";Stringans3="";Stringans4="";StringtestID="";for(inti=0;i<10;i++){intj=rand.Next(1,maxTestID);intk=0;cmd=newSqlCommand("selectidfromXZ_testwhereid="+j,con);while(cmd.ExecuteScalar()==null){j=rand.Next(1,maxTestID);cmd=newSqlCommand("selectidfromXZ_testwhereid="+j,con);}while(k<=i){cmd=newSqlCommand("selectidfromXZ_testwhereid="+j,con);if(j==testIDs[k]||cmd.ExecuteScalar()==null){j=rand.Next(1,maxTestID);k=0;}else{k++;}}Literall=newLiteral();Literall1=newLiteral();cmd=newSqlCommand("selecttestContentfromXZ_testwhereid="+j,con);testContent=(String)cmd.ExecuteScalar();cmd=newSqlCommand("selecttestAns1fromXZ_testwhereid="+j,con);ans1=(String)cmd.ExecuteScalar();cmd=newSqlCommand("selecttestAns2fromXZ_testwhereid="+j,con);ans2=(String)cmd.ExecuteScalar();cmd=newSqlCommand("selecttestAns3fromXZ_testwhereid="+j,con);ans3=(String)cmd.ExecuteScalar();cmd=newSqlCommand("selecttestAns4fromXZ_testwhereid="+j,con);ans4=(String)cmd.ExecuteScalar();l.Text=i+1+"."+testContent+"<br>";testBtn1[i]=newRadioButton();testBtn2[i]=newRadioButton();testBtn3[i]=newRadioButton();testBtn4[i]=newRadioButton();testBtn1[i].GroupName="g"+i;testBtn1[i].Text="A、"+ans1+" ";testBtn1[i].ID="testBtn1"+i;testBtn2[i]=newRadioButton();testBtn2[i].GroupName="g"+i;testBtn2[i].Text="B、"+ans2+" ";testBtn2[i].ID="testBtn2"+i;testBtn3[i]=newRadioButton();testBtn3[i].GroupName="g"+i;testBtn3[i].Text="C、"+ans3+" ";testBtn3[i].ID="testBtn3"+i;testBtn4[i]=newRadioButton();testBtn4[i].GroupName="g"+i;testBtn4[i].Text="D、"+ans4+" ";testBtn4[i].ID="testBtn4"+i;Panel1.Controls.Add(l);Panel1.Controls.Add(testBtn1[i]);Panel1.Controls.Add(testBtn2[i]);Panel1.Controls.Add(testBtn3[i]);Panel1.Controls.Add(testBtn4[i]);l1.Text="<br><br>";Panel1.Controls.Add(l1);testIDs[i]=j;}if(!IsPostBack){for(inti=0;i<10;i++){cmd=newSqlCommand("selectrightAnsfromXZ_testwhereid="+testIDs[i],con);rightAns[i]=(int)cmd.ExecuteScalar();}}Buttonb=newButton();b.Text="提交";b.Click+=newSystem.EventHandler(this.b_click);Literallc=newLiteral();Literallc1=newLiteral();lc.Text="<center>";lc1.Text="</center>";Panel1.Controls.Add(lc);Panel1.Controls.Add(b);Panel1.Controls.Add(lc1);con.Close();}publicvoidb_click(objectsender,EventArgse){for(inti=0;i<10;i++){if(testBtn1[i].Checked){if(rightAns[i]==1){score+=5;}}elseif(testBtn2[i].Checked){if(rightAns[i]==2){score+=5;}}elseif(testBtn3[i].Checked){if(rightAns[i]==3){score+=5;}}elseif(testBtn4[i].Checked){if(rightAns[i]==4){score+=5;}}}Response.Redirect("result.aspx?score="+score);}}
解决方案
解决方案二:
你的url上没有score参数,有执行b_click么
解决方案三:
不好意思,能具体的说一下吗?
解决方案四:
在if里面设置断点,看看是不是进去IF判断了,目测其它问题是看不出来,
解决方案五:
Response.Redirect("result.aspx?score="+score);很显然是result.aspx这个页面出了问题(假设你已经成功跳转了的话)跟你的什么default页面没有任何关系
解决方案六:
result.aspx里获取score参数了吗?
解决方案七:
确实感觉是接收页面的问题,接收页贴出来才是关键
解决方案八:
不好意思了诸位,白天有事出去了!页面能跳转,但是点解提交就是第一张图的结果,没有分数!
解决方案九:
这是result.aspx.cs代码usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Configuration;usingSystem.Data.SqlClient;publicpartialclass_Default:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){Stringstr=Request.QueryString["score"];SqlConnectioncon=newSqlConnection("server=WANGSNOW;database=TestOnline;userid=sa;pwd=root");con.Open();//SqlCommandcmd=newSqlCommand("insertscoresetstuID="+Session["stuID"]+"",con);//cmd=newSqlCommand("updatescoresetstuID="+Session["stuID"]+"",con);SqlCommandcmd=newSqlCommand("updatescoresetXZ_score='"+str+"'wherestuID="+Session["stuID"]+"",con);//wherestuId='"+考号+"'考号为从登陆界面获取的值cmd.ExecuteNonQuery();con.Close();Response.Write("你的选择题考试成绩是"+str+"分");}protectedvoidButton1_Click(objectsender,EventArgse){Response.Redirect("test1.aspx?");}}
解决方案十:
楼主小白一枚,求各位大神们指教!
解决方案十一:
程序写成这样,能够跑通你也是够有恒心的。这个错误可能有很多种。没有断点没有log我只能把我看到的可能错误指出一下了:1.你这个错误很明显的参数没有正确的传递过来。2.我用你的代码去除数据库的部分复现了一下,是可以正常传递的。而且既然你能够正常的跳转,那么应该也不是数据库的事情。想说的是:是不是你的前台代码写得有问题?下面是我写的一个button,虽然简单,但是功能正常。<asp:ButtonText="submit"runat="server"OnClick="b_click"/>
3.接收页时没什么问题的,如果有问题不会打出一行字只有str没打出来。那么问题来了,是不是你没有把要提交的内容放到一个form表单里进行提交?要知道你的跳转url里加?参数名1=参数值1&参数名2=参数值2的格式是get方法,你没放在form表单当然提交不了。4.不会打断点的话出问题智能像现在这样瞎猜。断点:程序debug时运行到哪一行会停止程序,可以在此时查看变量,查看问题出在哪里。一种打法:在要停止程序的行点击右键,breakpoint,insertbreakpoint。(其实在某一行的前面点一下出现小红点即可)以下是一些建议:1.第一页的查询数据库语句没必要一次只查询一个问题的一个选项,太浪费效率,且容易出错。还有for循环执行10次,为什么不改变查询语句执行一次再对结果进行操作呢2.虽然你可能是新手,但是断点还是要学会的,毕竟你这种类型的问题过于简单而且不在你旁边其实小毛病还是很难找的,就像有强迫症的大象被蚂蚁咬了一口的感觉,想揪掉它怎么页揪不掉。3.你数据库查询语句写得真是渣……你既然要分4句获取四个变量,不能写成selecttestContent,testans1,testans2,testans3,testans4fromtesttablewhere****吗,这样查询一次能到一个5列的表不好吗,查询5次是IO操作哥哥!看着就心疼
解决方案十二:
Stringstr=Request.QueryString["score"];改为if(Request.Params["score"]!=null){str=Request.Params["score"].ToString();}
解决方案十三:
publicpartialclass_Default:System.Web.UI.Page这文件明显是从result.cs拷贝过来的,类名都没改能执行也很神奇
解决方案十四:
谢谢大神们的回复,我先按照你们给的方法试试!真心感谢
解决方案十五:
我的回答有用的话帮我顶一下我的问题~谢谢windows集成身份验证登录模式下,用户登录成功后怎样从activedirectory上取得用户详细信息我的问题都沉了&……还一个人只能连续回复三次你搞得怎么样了
解决方案:
刚看见好的!这个系统改的受不了!哈哈
解决方案:
问题解决了?
解决方案:
引用14楼qq283426694的回复:
我的回答有用的话帮我顶一下我的问题~谢谢windows集成身份验证登录模式下,用户登录成功后怎样从activedirectory上取得用户详细信息我的问题都沉了&……还一个人只能连续回复三次你搞得怎么样了
你都不放链接,怎么帮你顶上哪找你的帖子去
解决方案:
引用17楼Z65443344的回复:
Quote: 引用14楼qq283426694的回复:
我的回答有用的话帮我顶一下我的问题~谢谢windows集成身份验证登录模式下,用户登录成功后怎样从activedirectory上取得用户详细信息我的问题都沉了&……还一个人只能连续回复三次你搞得怎么样了你都不放链接,怎么帮你顶上哪找你的帖子去
那个问题最后解决了,我论坛玩的不多,以为有那种点我就有我回复的帖子这种东西存在~