ASP跨页面传送

 

    在开发asp.net项目中,大部分人都会经常使用 QueryString,Sesson,等进行页面间跳转的参数转递,使用这些页面属性各有适合的应用场景和优缺点。本文介绍种非常便捷的两种跨页面传送数据的方式。

跨页面的传送就是提交页面,并把这个页面和所有的控件值都传送给另一个页面。

第一种:

建立Page1.aspx页面如下:

<body>

    <form id="form1" runat="server">

    <div>

    <asp:Button ID="Button1" runat="server" Text="转到Page2"  PostBackUrl="~/Default4.aspx"/>

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <asp:Image ID="preImg" runat="server" ageUrl="~/Img/step0.jpg"

            Width="164px" />

    </div>

    </form>

</body>

再建立Page2.aspx页面如下:

<form id="form1" runat="server">

    <div>

        <asp:image ID="Image1" runat="server" Height="84px" Width="192px"></asp:image>

    </div>

</form>

现在是要在Page2.aspx中显示Page1.aspx控件的相应值。只需要在Page2.aspx中修建该控件类型的一个实例,在Page2页面的Page_Load事件中使用PreviousPage的FindControl方法填充该实例即可,赋予FindControl方法的String值是Id,它用前一个页面的服务器控件。赋予值之后就可以处理该服务器控件 及其值了。就好像它一开始就位于当前页面上一样。代码如下:

protected void Page_Load(object sender, EventArgs e)

    {

        TextBox preTxt=(TextBox)PreviousPage.FindControl("TextBox1");

        Image preImg=(Image)PreviousPage.FindControl("preImg");

        Response.Write(preTxt.Text);

        this.Image1.ImageUrl = preImg.ImageUrl;

    }

 

运行后在页面上的文本框中输入Page1,点击按钮结果如图:

 

第二种方式:

在Page1.aspx中创建该控件的属性。

 public TextBox pp_TextBox1 {get { return TextBox1; }  }

public Image pp_Img{ get { return preImg; } }

为了处理Page1.aspx,中的属性,必须把PreivousPage属性强类型化为Page1.aspx.为些,要使用@PreviousPageType指令。@PreviousPageType指令是一个新指令,用于处理ASP.Net3.5提供的跨页面传送新功能。这个指令只包含两个属性:

TypeName:设置回送时的派生类的名称。

VirtualPath:设置回送时所传送页面的地址。

<%@ PreviousPageType VirtualPath="~/Page1.aspx" %>

这个指令允许使用VirtualPath属性指向Page1.aspx.之后就可以在Page2.aspx中使用PreivousPage属性通过代码提示查看到Page1.aspx的属性了。这个指令用于指定跨页面的传送过程起始于哪个页面。剩下的实现方法类型第一种方式。

这里面有个问题,若没有点击按钮直接在地址栏输入Page2.aspx访问的话,将会发生错误。使用IsCrossPagePostBack属性就可以很容易处理这个问题.加上

If(PreviousPage!=null && PreviousPage. IsCrossPagePostBack)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值