程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> ASP.NET2.0新特性-跨頁傳送(CrossPagePostBack)

ASP.NET2.0新特性-跨頁傳送(CrossPagePostBack)

編輯:.NET實例教程

今天晚上沒事在辦公室看看ASP.Net2.0高級編程(特別版),看到跨頁傳送的時候就順便動手練習一下。並且順帶著發現了作者在這的一個錯誤。P75頁關於判斷頁面是否是跨頁面傳送的時候少加了一個條件,PreviousPage!=null。如果沒有這個條件的話,處理普通的頁面就會出現空引用的異常。

跨頁面傳送是ASP.Net2.0引進的一個新特性。可以將A頁面的值傳給第二個頁面,而不是傳統的只提交給A頁面自己。 假設目前有兩個頁面A和B,要想讓B頁面獲取到A頁面的值,需要在B頁面上的設置<%@ PreviousPageType VirtualPath="~/Default.ASPx" %>,如圖:

同時將A頁面要傳遞的值寫一個屬性,B頁面可以通過屬性來訪問A頁面傳遞的值。這裡是將一個文本框的值傳遞過去。同時在A頁面上放一個按鈕,設置按鈕的postbackurl屬性為B頁面的URL,代碼如下:

 



    <form id="form1" runat="server">
        <ASP:ScriptManager ID="ScriptManager1" runat="server" />
        <div>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" PostBackUrl="~/CrossPost.ASPx"
                Text="Button" ValidationGroup="ww" />
            <asp:TextBox ID="TextBox1" runat="server"></ASP:TextBox>
            <ASP:RequiredFieldValidator ID="RequiredFIEldValidator1" runat="server" ErrorMessage='<bgsource src="C:WindowsMediaWindows XP Error.wav">'
                  SetFocusOnError="True" ControlToValidate="TextBox1" EnableClIEntScript="TRUE" ValidationGroup="ww">*</ASP:RequiredFIEldValidator>
            <br />
            <asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">LinkButton</ASP:LinkButton></div>
    </form>
</body>

 

 



   public TextBox UserName
    ...{
        get
        ...{
            return TextBox1;
        }
 }

 

在B頁面,這在判斷頁面是否是跨頁面傳送的時候要上PreviousPage是否為空,要不正常的頁面傳送過去就會出現空引用的異常,ASP.Net高級編程的示例代碼中就沒有判斷,會出錯。

 



    protected void Page_Load(object sender, EventArgs e)
    ...{
        if (!IsPostBack)
        ...{
            if (PreviousPage!=null && PreviousPage.IsCrossPagePostBack)
            ...{
                Response.Write("跨頁傳值:" + PreviousPage.UserName.Text);
                //Response.Write("<script language=Javascript>alert('跨頁傳的值為:" + PreviousPage.UserName.Text + "');</script>");
            }
            else
            ...{
                Response.Write("普通的頁面轉換,不是跨頁!");
                
            }
        }
 &nbsp;      
      
    }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved