zoukankan      html  css  js  c++  java
  • 利用button控件的PostBackUrl属性传值,页间传值postbackurl问题

    源页面WebForm1.aspx和目标页面WebForm2.aspx.

    WebForm1.aspx中的部分代码:
         
         <asp:Button ID="btnPostBack" Runat="server" PostBackUrl="~/webform2.aspx" Text="PBButton"></asp:Button>
         
         <asp:TextBox ID="txtName" Runat="server" ></asp:TextBox>
         
         <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
         
         WebForm2.aspx.cs中的部分代码:
         
         protected void Page_Load(object Sender,System.EventArgs e)
         
         {
         
         TextBox txtName;
         
         Calendar calendar1;
         
         txtName=(TextBox)PreviousPage.FindControl("txtName");
         
         calendar1=(Calendar)PreviousPage.FindControl("Calendar1");
         
         Label.Text="Hello,"+txtName.Text+calendar1.SelectedDate.ToShortDateString();
         
         }
         
         使用这种方法存在一个问题:如果在没有单击那个按钮之前,也就是未处理WebForm1.aspx之前,有人请求了WebForm2.aspx,该怎么办?
     
    这就需要在WebForm2.aspx中的代码处理之前加一个判断.使用IsCrossPagePostBack属性,这与IsPostBack属性很相似,它允许检查请求是否来自WebForm1.aspx.如下:
         
         protected void Page_Load(object Sender,System.EventArgs e)
         
         {
         
         if(PreviousPage.IsCrossPagePostBack)
         
         {
         
         TextBox txtName;
         
         Calendar calendar1;
         
         txtName=(TextBox)PreviousPage.FindControl("txtName");
         
         calendar1=(Calendar)PreviousPage.FindControl("Calendar1");
         
         Label.Text="Hello,"+txtName.Text+calendar1.SelectedDate.ToShortDateString();
         
         }
         
         else
         
         {
         
         Response.Redirect("WebForm1.aspx");
         
         }
         
         } 
    

    另外,在传值的时候,可能会遇到问题
     

    Default.aspx 里只有一个BUTTON 和一个TEXT


    protected void Button1_Click(object sender, EventArgs e)
    {
    Button1.PostBackUrl = "~/Default2.aspx";
    }


    Default2.aspx 里有个TEXT


    if (PreviousPage != null)
    {
    TextBox1.Text = (PreviousPage.FindControl("TextBox1") as TextBox).Text;
    }

    -----------------------------------------------------
    问 题:在Default.aspx在点击Button1 二次 才能进入Default2.aspx

    我们来看点击事件

    protected void Button1_Click(object sender, EventArgs e)
    {
    Button1.PostBackUrl = "~/Default2.aspx";
    }


    这句代码,作用是把URL地址"~/Default2.aspx"赋给PostBackUrl属性,


    但是当你第一次点击的时候,只起赋值作用,


    第二次点击的时候,Button才执行PostBackUrl属性的机制,将页面跳转到你想跳转到的页面。


    你可以在前台直接将URL地址赋给PostBackUrl属性即可。

    方法一:HTML code

    <asp:Button ID="Button1" runat="server" PostBackUrl="~/Default2.aspx" Text="baidu" />

    或者,

    方法二:在后台写的话

    C# code

    protected void Button1_Click(object sender, EventArgs e) { this.Button1.PostBackUrl ="~/Default2.aspx Button1_Click(this,e); }

    法三:还可以把这句 Button1.PostBackUrl = "~/Default2.aspx"; 写在page_load 里

  • 相关阅读:
    IDETalk
    servlet概述
    过滤器(Filter)
    ieda常用快捷键
    UUID
    JRebel 7.0.10 for intellij IDEA 2017.1
    BP神经网络(手写数字识别)
    遗传算法解决TSP问题
    [CODEVS1258]关路灯
    [NOIP2007]统计数字
  • 原文地址:https://www.cnblogs.com/iceicebaby/p/2493848.html
Copyright © 2011-2022 走看看