.NET页面信息传递

一、跨页信息的传递

  • 使用查询字符串进行跨页信息传递

    • 组装查询字符串:"main.aspx?userName=jack&pwd=123"
    • 接收数据的方式:Request.QueryString["userName"];Request.QueryString["pwd"];
  • 使用按钮的跨页提交进行信息传递

    • 设置按钮的PostBackUrl属性为要跳转的页面,此时在客户端自动生成一段脚本,实现点击按钮的跳转操作,并且是以POST方式跳转
    • 接收方式:
    Request.Form["name"]
    
    TextBox txt=(TextBox)PreviousPage.FindControl("服务端ID")
  • 在任意事件处理程序中进行跨页面发送

    • Server.Transfer("目标页",true)
    • 接收方式:如果保留源页面中的form数据或查询字符串数据,可以通过Request.Form["name"]或Request.QueryString["name"]

                        如果清空了源页面中form数据或查询字符串数据,可以这样接收:

TextBox txt=(TxtBox)PreviousPage.FindControl("服务端ID")

二、使用查询字符串进行跨页传递

  • 查询字符串的写法

  • 信息传递前的URL编码

    • 为确保传递的信息都是允许的字符,在信息传递前必须进行URL编码
Protected void btnLogin_Click(object sender,EventArgs e)

{

    String userName=Request.From["userNmae"];  
    //以post方式提交表单,获得表单中指userName的元素的值

    String pwd=Request.Form["pwd'];       
    //以post方式提交表单,获得表单中指定pwd的元素的值

    StuDBDataContext db=new StuDBDataContext()

    admins admin=db.admins.FirstOrDefault(a=>a.userId==userName&&a.password==password)

    if(admin==null)

        Response.Write("<script>alert('用户名或密码错误');</script>");

    Else

    {

            //先弹出脚本,再跳转,下面这两条语句实现不了

            Response.Write("<script>alert('登录成功');</script>")

            Response.Wirte("~/main.aspx?useName="+useName)

            //使用客户端脚本实现

            Respouse.Write("<script>alert('登录成功');window.location.href='main.aspx?nusrName………")

    }


}

三、跨页面发送

  • 使用按钮控件的PostBackUrl属性可使页面提交到其他页面中
  • 使用Page的PreviousPage属性检查是否存在跨页提交前页面
  • 可得到跨页前页面中控件的内容
  • 使用Request进行信息接收与使用控件进行属性提取的不同

四、在任意事件处理程序中进行跨页面发送

由于只有实现了IButtonControl接口的控件才能够实现跨页提交

在任意服务器代码中可以使用以下方法进行跨页提交

this.Server.Transfer("页面Url",是否保留原页面的请求信息);

代码示例

跨页代码:this.Server.Transfer("b.aspx",true);

接收页面代码:

//提取上页面中控件中的信息

this.Response.Write(this.Response.Form["txtTest"]);

//提取URL参数中的信息

this.Response.Write("<br/>"+this.Response.QueryString["mode"]);



Protect void Page_Load(object sender,EventArgs e)

{

//第一种方式:使用Request.From[];接收传递来的值

//String userName=Request.Form["userName"]

//String pwd=Request.From["pwd"]

//lblMsg.Text="用户名:"+userName+"密码:"+pwd;



//第二种方式:PreviousPage:获得当前页面传递控件的页

Page page=PreviousPage;

If(page!=null)

{

//根据服务端ID搜索服务端控件,返回的是控件的基类型Control

TextBox txtuserName=(TextBox)page.FindControl("userName");

String userName=txtuserName.Text;

TextBox txtPwd=(TextBox)page.FindControl("pwd");

String pwd=txtPwd.Text;

lblMsg.Text="用户名:"+userName+",密码:"+pwd;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值