大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

NET页面之间传值的艺术之Server

来源:http://www.dfwstonefabricators.com 作者:编程应用 人气:109 发布时间:2019-09-22
摘要:Server.Transfer 本条情势比较以前介绍的主意有个别复杂一点,但在页面间值传递中却是非常有效的,使用该措施你能够在另贰个页面以目的属性的措施来存取流露的值,当然了,使用这种

  Server.Transfer

本条情势比较以前介绍的主意有个别复杂一点,但在页面间值传递中却是非常有效的,使用该措施你能够在另贰个页面以目的属性的措施来存取流露的值,当然了,使用这种办法,你必要额外写一些代码以成立一些特性以便能够在另多少个页面访谈它,但是,那些方式带来的利润也是显明的。

总的来讲,Server.Transfer是面象对象开辟所选拔的艺术,其接纳Server.Transfer方法把流程从脚下页面教导到另一个页面中,新的页面使用前一个页面包车型客车答疑流,所以这一个办法是完周全象对象的,简洁有效。

  Server.Transfer是从当前的ASPX页面转到新的ASPX页面,服务器端实行新页并出口,在新页面中经过Context.Handler来得到前贰个页面传递的种种数据类型的值、表单数据、QueryString.由于重定向完全在劳务器端实现,所以客商端浏览器中的URubiconL地址是不会改换的。调用Server.Transfer时,当前的ASPX页面截止推行,实行流程转入另三个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创立的应答流。

  ps:比较Server.Transfer和Response.Redirect的区别。
    Server.Transfer在服务器端实现,所以顾客端浏览器中的U奥迪Q5L地址是不会转移的;Response.Redirect是客商端完毕,向劳动器端建议新的页面管理乞求,所以顾客端浏览器中的U翼虎L地址是会变动的。
    Server.Transfer在劳务器端完结,不要求顾客端提议央求,收缩了顾客端对服务器端建议呼吁。
    Server.Transfer只好够转跳到本地设想目录钦赐的页面,也正是工程项目中的页面,而Response.Redirect则特别灵活,能够跳转到任何U凯雷德L地址。
    Server.Transfer能够将前八个页面包车型地铁各样类型的值传到新的页面;Response.Redirect则只可以借助UOdysseyL中带参数或是结合地方五种办法把各连串型的值传到新的页面。

  优点:1.一直在服务器端重定向,使用轻易方便,减少了顾客端对服务器端提议呼吁。

     2.足以传递各样数据类型的值和控件的值。

  劣点:1.客商端浏览器中的UGL450L地址是不改动,会变成在新的页面或许出现部分竟然的标题。例如要是源页面和目标页面不在同叁个虚构目录或其子目录下,那么使用相对路线的图片、超链接都会变成错误的指向。

  使用格局:1.在源页面包车型客车代码中,使用Page类的Server.Transfer跳到另一个页面传递页面数据:Server.Transfer("b.aspx","false")。

       2.在指标页面中,使用Context.Handler来接收数据:FormerPage formerPage = (FormerPage)Context.Handler;然后用formerPage的属性和办法来获得前三个页面包车型地铁值,也许直接用Context.Items["myParameter "]

  例子:a.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="a.aspx.cs" Inherits="WebApplication.a" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title></head><body>    <form id="form1" runat="server">        <div>            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />        </div>    </form></body></html>

    a.aspx.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace WebApplication{    public partial class a : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {        }        public string Name => TextBox1.Text.Trim().ToString();//要传给b.aspx页面的值         protected void Button1_Click(object sender, EventArgs e)        {            Server.Transfer("b.aspx");//注意:使用此方法 ,IE地址栏位地址不会变.            //实际相当于A.aspx告诉ASP.NET处理引擎,你帮我执行B.aspx吧,然后把结果给我,我再给用户。因此浏览器还是以为自己获取的是A.aspx,而实际上服务器帮A.aspx执行了B.aspx        }    }}

    b.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="b.aspx.cs" Inherits="WebApplication.b" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title></head><body>    <form id="form1" runat="server">        <div>        </div>    </form></body></html>

    b.aspx.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace WebApplication{    public partial class b : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            var a = Context.Handler;            //用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了            var getvalue = a.Name;            Response.Write;        }    }}

ps:此小说是自个儿仿照效法英特网内容丰裕本身的掌握整合而成,如无意中入侵了你的机动,请与自己联系。

本文由大发体育娱乐在线发布于编程应用,转载请注明出处:NET页面之间传值的艺术之Server

关键词:

最火资讯