在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文共讨论了六种方法:
protected void Button_QuerySting_Click(object sender, EventArgs e)
{ string url = "formB.aspx?ID=" + this.TextBox_ID.Text + "&Name=" + this.TextBox_Name.Text; Response.Redirect(url); }
protected void Page_Load(object sender, EventArgs e)
{ string ID= Request.QueryString["ID"]; string Name = Request.QueryString["Name"]; PopMsg(ID, Name); } public void PopMsg(string ID,string Name) { string msg = "ID:" + ID + ",Name:" + Name+" ****** "; this.Label1.Text += msg; //System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('" + msg + "');</script>"); }
二.Session 以降低服务器内存资源的消耗;超过设定保存时间,切换用户,关闭了浏览器更换另一浏览器或更换了另一机器,其中保存 的数据将丢失; 存自定义的类等;
public class UserInfo
{ // // TODO: 在此处添加构造函数逻辑 // public UserInfo() { } public string ID = ""; public string Name = ""; } 源页面代码: protected void Button_Session_Click(object sender, EventArgs e) { Session["ID"] = this.TextBox_ID.Text; Session["Name"] = this.TextBox_Name.Text; UserInfo myInfo = new UserInfo(); myInfo.ID = this.TextBox_ID.Text; myInfo.Name = this.TextBox_Name.Text; Session["myInfo"] = myInfo; Server.Transfer("formB.aspx"); } 目标页面代码: protected void Button_session_Click(object sender, EventArgs e) { PopMsg(Session["ID"].ToString(), Session["Name"].ToString()); UserInfo myInfo = (UserInfo)Session["myInfo"]; PopMsg(myInfo.ID, myInfo.Name); Session.Remove("ID"); Session.Remove("Name"); Session.Remove("myInfo"); //Session.RemoveAll(); }
5.配置Sessoin的使用策略: 该会话是否使用Cookie作为标识ID。 mode=“Inproc”表示会话的存储位置为进程中,另外还有SQLServer, stateServer,Customer等。这些配置可在网站发布之后进行。 三.Server.Transfer Handler 来获得前一个页面传递的各种数据类型的值、表单数据、 QueryString.由于重定向完全在服务器端完成, 所 以客户端浏览 器中的URL地址是不会改变的。 调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另 一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。
完成,向服务器端提出新的页面处理请求,所以客户端浏览器中的URL地址是会改变的。 灵活,可以跳转到任何URL地址。 是结合上面四种办法把各种类型的值传到新的页面。 在同一个虚拟目录或其子目录下,那么使用相对路径的图片、超链接都会导致错误的指向。
UserInfo myInfo = new UserInfo();
public string GsID { get { return this.TextBox_ID.Text; } set { this.TextBox_ID.Text = value; } } public string GsName { get { return this.TextBox_Name.Text; } set { this.TextBox_Name.Text = value; } } public UserInfo GsMyInfo { get { return myInfo; } set { myInfo = value; } } 然后调用Server.Transfer方法 protected void Button_ServerTransfer_Click(object sender, EventArgs e) { Context.Items.Add("Context", "Context from formA"); myInfo.ID = this.TextBox_ID.Text; myInfo.Name = this.TextBox_Name.Text; Server.Transfer("formB.aspx",true ); } 目标页面代码: //注意必须在 Page_Load 事件里才能获取; protected void Page_Load(object sender, EventArgs e) { //create instance of source web form formA wf1; //get reference to current handler instance wf1 = (formA)Context.Handler; PopMsg(" 1:"+wf1.GsID, "1:"+ wf1.GsName); UserInfo myInfo = new UserInfo(); myInfo = wf1.GsMyInfo; PopMsg(myInfo.ID, myInfo.Name); }
等需要全局变量的地方。
源页面代码:
protected void Button_Application_Click(object sender, EventArgs e) { Application["ID"] = this.TextBox_ID.Text; Application["Name"] = this.TextBox_Name.Text; Server.Transfer("formB.aspx"); } 目的页面代码: protected void Button_application_Click(object sender, EventArgs e) { Application.Lock(); PopMsg(Application["ID"].ToString(), Application["Name"].ToString()); Application.UnLock(); }
五.Cookie 服务端。一旦浏览器关闭,这些Cookies或被删除掉或被保存起来(浏览器中可以设定这些),对于已存储的Cookies (一些位于浏览器端机器磁盘中的文件),下一次打开浏览器访问同一网站时这些Cokies会被重新传递的(如果被删除 掉,下一次打开浏览器访问同一网站或页面时,Cookies由服务器端重新创建)。 有状态的(试想如何区分访问同一个页面的客户的身份),我们不得不考虑状态的存储问题,Cookies便是这样一种解决 方案。 站时不需要重新输入密码这样的功能。对于用户登出,一般会删掉Cookie。 与Session一样,它是针对每一个用户而 言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合 ASP.NET内置对象Request来使用。 用户下次访问就可以通过检索获得以前的信息。所以Cookie也可以在页面间传递值。Cookie通过HTTP头在浏览器和服务 器之间来回传递的。 1.优点和缺点: 持用户状态。
源页面代码:
protected void Button_cookie_Click(object sender, EventArgs e) { //如果浏览器支持cookie if (Request.Browser.Cookies) { HttpCookie myCookie = new HttpCookie("ID"); myCookie.Value = this.TextBox_ID.Text; Response.Cookies.Add(myCookie); myCookie = new HttpCookie("Name"); myCookie.Value = this.TextBox_Name.Text; Response.Cookies.Add(myCookie); } Server.Transfer("formB.aspx"); } 目的页面代码: protected void Button_cookie_Click(object sender, EventArgs e) { if (Request.Browser.Cookies) { if ((Request.Cookies["ID"] != null) && (Request.Cookies["Name"] != null)) { PopMsg(Request.Cookies["ID"].Value.ToString(), Request.Cookies["Name"].Value.ToString()); } } StringBuilder cookiesInfo = new StringBuilder(); //遍历Request中的cookies对象的所有键值 foreach (string str in this.Request.Cookies.AllKeys) { cookiesInfo.Append("key:" + str+","); cookiesInfo.Append("keyValue:" + Request.Cookies[str].Value+","); cookiesInfo.Append("<br/>"); } PopMsg(cookiesInfo.ToString(),""); }
源页面formA.aspx代码:
<asp:Button ID="Button_cookie" runat="server" OnClick="Button_cookie_Click" Text="Cookie传值" Width="176px" PostBackUrl="formB.aspx" /> 注意在Button_cookie_Click事件中不要调用页面跳转代码; 如 Server.Transfer("formB.aspx"); 目的页面formB.aspx代码: protected void Page_Load(object sender, EventArgs e) { if (PreviousPage != null) { Label myLabel1 = (Label)PreviousPage.FindControl("Label1"); this.Label1.Text = myLabel1.Text; // Response.Write (myLabel1.Text); } }
|
请发表评论