asp.net中缺少if(!Page.IsPostBack)引起的錯誤

來源:互聯網
上載者:User

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)裡,那麼點登陸等按鈕時,下拉式功能表中的內容又會重建,所以無論你選了哪一項,都只能得到第一項的值,解決方案同上個問題,原理相同,這裡就不解釋了。

樣本

代碼

 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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.