页面间传递参数

常用的两种基本方式: GET  POST :两种方式都是发送请求,将数据发出去

编程环境是。net  ,如果是别的编程环境有一定的不同

一、form 表单

1、form 表单的说明

(表单的提交没有前后台的交互)

数据的提交,经常关联的是form  表单提交,

<form id="form1"  method="get" action="1.aspx" >   

<form id="form1"  method="get" action="1.aspx"  runat="server">  :

 当出现runat="server"的时候,它的优先级别比action="1.aspx"高,所以会出现回发的现象,把action给忽略掉。

我们可以去掉runat="server"来解决这个问题,还可以在不去掉runat="server"的情况下,根据修改提交按钮,并在提交按钮点击事件当中来解决这个问题。

不去掉runat="server":

将提交控件改为服务器控件:

<form id="form1" action="1.aspx" method="post" runat="server">
    <div>
        <input id="txtuser" type="text"  runat="server"/>
        <input id="Submit1" type="submit" value="提交"  runat="server"/>
</div> 
</form>

然后在提交按钮的控件当中写着:

Server.Transfer("1.aspx");这个时候就可以完成两个页面之间的传递了。注意:这里不可以使用Response.Redirect("1.aspx")否则仍然无法完成此操作。

(自己调试出现错误提示,Server  未定义  ,不到万不得已,form还是不要runat=server了 )

2、表单内控件的说明

(1)表单内控件,需要服务器进行处理的:读取数据、响应函数,都需要 runat=server,否则后台服务器无法读取到控件。(非服务器控件的内容读取都是直接在前台页面进行的,看到很多都是在js中进行操作。

(2)类型“Button”的控件“Button1”必须放在具有 runat=server 的窗体标记内:

   如果只是单纯的提交数据,submit用在不加runat=server 的form中就足够用了,提交给自己,action="",提交给别的页面 action="1.aspx"

3、get  post 后台读取数据的不同:

get:     string user = Request.QueryString["txtuser"];

post:   string user = Request.Form["txtuser"];

 二、非form  表单 

 使用form  一般和submit 联合使用,设定好提交的方式,post 或get ,设定好 目标页面,action=""  或action="1.aspx",

一点按钮,数据自动绑定,自动就发送出去了。不用自己绑定,系统自动进行绑定,很明显的体现在get中,因为在get调用到的目标网页会是:1.aspx?txtuer=ssss,如果传递的参数是汉字,还会转换成别的编码方式:1.aspx?txtuser=%E5%B0%8F%E7%A2%97

这种自动绑定相对应的就是 要自己对数据进行帮定,设定数据提交的方式,不适用form

1、响应重定向  

Response.Redirect("jsymGet1.aspx?name="+name.Text+"&age="+age.Text+"传递数据的方式是"+Request.RequestType);

调用网址:

http://localhost:10209/10%e3%80%81%e4%bc%a0%e9%80%92%e5%8f%82%e6%95%b0/jsymGet1.aspx?name=1122&age=%e5%b0%8f%e6%9d%8e 

显示:

name:1122;age=小李  传递数据的方式:GET

响应重定向方法是目前为止将一个网页重定向到另一个网页的最简单的方法的最简单的方法。当Web服务器接到一个重定向请求后,它会将一个响应头送给客户端,这将导致客户端发送一个新的请求到服务器。按句话说,一个重定向请求实际上是两个请求响应:一个是最初的请求响应,另一个是新的重定向请求响应。

  在ASP.NET中实现重定向很容易。下面的代码演示了如何使用Response.Redirect方法实现网页重定向:

   protected void Redirect_Click(object sender, EventArgs e) 
  {
      Response.Redirect("menu.aspx"); 
  }

    要注意的是重定向请求只是一个GET请求,这就意味着我们不能从源页中通过重定向命令提交数据。但是我们可以在重定向中使用查询字符串来传递数据。如下面代码所示:

   protected void Redirect_Click(object sender, EventArgs e) 
  {
            Response.Redirect("menu.aspx?userName=" + UserName.Text)); 
      }


  上面的例子将一个查询字符串作为参数传递给了Response.Redirect方法的目标URL。我们可以通过如下的代码获得源数据。

      protected void Page_Load(object sender, EventArgs e) 
  {
        string userName = Request["userName"];     //如此读取数据  掩盖掉了使用的是GET,  Request.QueryString[],更为明显
      }

2、服务器传输方法

     Server.Transfer("Menu.aspx",true); 

    Response.Redirect和Server.Transfer的比较

  由于Response.Redirect方法要进行两次请求响应操作,因此,我们应该在对性能要求高的网站尽量避免使用这种方法。然而,只从技术上说,使用redirect方式确实可以从一个网页跳到另一个网页。相比之下,Server.Transfer会更有效率,但是跳转的范围仅限于同一个Web服务器的不同网页。从本质上说,我们可以使用Server.Transfer来消除不必要的请求响应操作。如果我们需要重定位到不同服务器的网页,就需要使用Response.Redirect方法。

  3、跨页提交概述 :服务器控件 的 PostBackURL 属性

       在ASP.NET 2.0中,我们可以通过实现IbuttonControl接口提交给不同的WebForm,来实现跨网页的提交。和Response.Redirect类似,跨网页提交是一个基于客户端的传输机制,但也有点象Server.Transfer,目标网页也可以访问源网页的数据。为了使用跨网页提交,我们需要在源网页中的PostBackUrl属性中指定目标URL。

      这部分将讨论一下如何在ASP.NET2.0中实现跨网页提交。为了开始我们的学习,假设有两个Web页,一个是源Web页,另一个是目标Web页。在源网页中初始化了使用按钮进行的跨网页提交操作。我们首先必须设置目标网页按钮的PostBackUrl属性,顺便说一句,所有实现了System.Web.UI.WebControls.IbuttonControl接口的Web控件都有跨网页提交的特性。下面的代码将演示这一过程。

   PostBackUrl="~/target.aspx" text = "Post to a target page"/> 
  当我们设置PostBackUrl属性时,ASP.NET框架将相应的控件绑定到一个新的叫WebForm_DoPostBackWithOptions的JavaScript函数,产生的Html代码如下:

   onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("btnSubmit", "", false, "","Target.aspx", false, false))" id="btnSubmit" />

  对于上面的html代码来说,当用户单击按钮时,浏览器将提交目标URL(Target.aspx),而不是源URL。

原文地址:https://www.cnblogs.com/gongyu/p/3975264.html