62,074
社区成员
发帖
与我相关
我的任务
分享
RadioButton1.CheckedChanged += new EventHandler(RadioButton1_CheckedChanged);
RadioButton2.CheckedChanged += new EventHandler(RadioButton2_CheckedChanged);
RadioButton3.CheckedChanged += new EventHandler(RadioButton3_CheckedChanged);
RadioButton4.CheckedChanged += new EventHandler(RadioButton4_CheckedChanged);
在RadioButton_CheckedChanged里修改为
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
if (RadioButton1.Checked == true)
{
string[] answer = Session["answer"] as string[];
answer[id] = "A";
Session["answer"] = answer;
}
}
就解决答案修改的问题了。
之前没有EventHandler,导致了RadioButton_CheckedChanged没有执行。if(!Postback)
{
.......
}
这样的判断。
你可以看到,真正的 asp.net 页面在回发时(例如点击RadioButton 造成回发时)是不会去花时间去重复读取数据库的,也就是说不会去重新人工 bind 控件内容的。只要是以为页面回发就得重新绑定页面上的控件的,都是没有搞懂asp.net 最基本的机制的。
我通常会强调一个最基本的测试,来判断传统的 asp.net 程序应用程序,一个程序员到底适不适合继续开发它。具体做法是:用鼠标拖拉一个 Button按钮到页面,然后双击它产生后台捕获事件处理方法(维持方法内空的——什么都不做——就可以了)。这就完了!当你开发时,例如你在页面上放了Radio 选择或者别的控件,那么先不要急着放更多的控件、实现更多的UI需求,先按 F5 运行页面,然后操作一下页面(改变用户选择),然后点这个 Button,让页面回发。由于这个 Button 其实在后台什么都不做,那么当你的页面刷新之后,你应该看到页面上用户选择的状态还在、没有出现任何混乱。如果混乱了,例如数据变成初始值了,那么别往下编程了,赶紧解决这个问题吧。因为这是asp.net 页面最最基本最初级但是也是决定了将来的编程会不会“坑”的重要知识点,页面回发时并不需要重新绑定后台数据数据,必须提前、随时用这个 button 来测试。一个页面必须上万次地、数十万次地经过这个button测试。