ASP.NET2.0新特性-跨页传送(CrossPagePostBack)

今天晚上没事在办公室看看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(
"普通的页面转换,不是跨页!");
                
            }

        }

        
      
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值