asp.net中缺少if(!Page.IsPostBack)引起的错误

asp.net中缺少if(!Page.IsPostBack)引起的错误


        1。验证码错误
        验证码一般是在Page_Load事件里直接生成,或是调用函数生成的,如果你没有把生成验证码的代码放在if(!Page.IsPostBack)里面,那当你点登陆等按钮时,将永远也登陆不了,你仔细检查发现登陆代码并没有,但就是登陆不了,如果跟踪,你会发现,你填入的验证码和程序生成的验证码会不同,但是在登陆的时候,你明明填的是正确的验证码,哈哈,这总问题要是没有经验,真是会搞的头晕。这里我给大家解释一下为什么点登陆的时候得到验证码会不同。
        当你点登陆按钮的时候,一般人以为会直接执行登陆按钮的事件代码,其实错误就在这里,点登陆的时候,首先执行的是Page_Load的代码,也就是说,无论你什么时候点按钮,首先执行的是Page_Load事件里的代码,然后才执行按钮对应的事件代码,所以,当你点登陆时,由于它执行了Page_Load里的代码,使得验证码重新生成了,而你填入的验证码是不会变的,结果一比较两个验证码(一个你填的,一个重新生成的),当然就不同了。此种问题,只要将生成验证码的代码放在if(!Page.IsPostBack)里面就可以解决了,放在里面后,当你查看页面时,点登陆按钮,就不会再执行这里面的代码了。
        2。得不到下拉菜单的值
        一般DropDownList控件里的内容,也是在Page_Load里通过代码添加的,如果这些代码没有放在没有if(!Page.IsPostBack)里,那么点登陆等按钮时,下拉菜单中的内容又会重新生成,所以无论你选了哪一项,都只能得到第一项的值,解决方法同上个问题,原理相同,这里就不解释了。

示例

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
1 using System;
2   using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.WebControls;
8 using System.Web.UI.WebControls.WebParts;
9 using System.Web.UI.HtmlControls;
10 public partial class _Default : System.Web.UI.Page
11 {
12 protected void Page_Load( object sender, EventArgs e)
13 {
14 if ( ! IsPostBack)
15 {
16 this .Label1.Text = DateTime.Now.ToLongDateString();
17 this .Panel2.Visible = false ;
18
19 }
20 }
21 protected void Button1_Click( object sender, EventArgs e)
22 {
23 if ( this .TextBox1.Text.Trim() != "" )
24 {
25 Response.Redirect( " Default2.aspx?UserName= " + TextBox1.Text.Trim());
26 }
27
28 }
29 protected void LinkButton1_Click( object sender, EventArgs e)
30 {
31 this .Panel1.Visible = false ;
32 this .Panel2.Visible = true ;
33 }
34 }
35
36 Default2.aspx内容
37 using System;
38 using System.Data;
39 using System.Configuration;
40 using System.Collections;
41 using System.Web;
42 using System.Web.Security;
43 using System.Web.UI;
44 using System.Web.UI.WebControls;
45 using System.Web.UI.WebControls.WebParts;
46 using System.Web.UI.HtmlControls;
47 public partial class Default2 : System.Web.UI.Page
48 {
49 protected void Page_Load( object sender, EventArgs e)
50 {
51 if (Request[ " UserName " ] != null )
52 {
53 this .Label1.Text = Request[ " UserName " ].ToString();
54 }
55
56 }
57 }
58

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值