ASP.NET页面传值不使用QueryString
ASP.NET页面传值不使用QueryString
Asp.net中的页面传值方法:
1 Url传值
特点:主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,
使用场景:传递的值少而安全性要求不高的情况下
传递:url="WebForm2.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
接收:name= Request.QueryString["name"];
email=Request.QueryString["email"];
2 Session
特点:Session变量存放在服务器端,存储过多的数据会消耗比较多的服务器资源,可是使用清理动作来去除一些不需要的session,Session容易过期
使用场景:三个以上页面需要共用的变量
传递:Session["name"]=TextBox1.Text;
接收: name=Session["email"].ToString();
清除: Session.Remove("name");
3 Cookie
特点:Cookie是存放在客户端的,需要要配合ASP.NET内置对象Request来使用
传递:HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
接收:name = Request.Cookie["name"].Value.ToString();
4 Application
特点:Application对象的作用范围是整个全局,对所有用户都有效。其常用的方法用Lock和UnLock
传递:Application["name"] = Label1.Text;
接收: Application.Lock();
name = Application["name"].ToString();
Application.UnLock();
5 Response.Redirect()
传递:Response.Redirect( "target.aspx?param1=1111¶m2=2222 ")
接收: string str = Request[ "param1 "]
6 Server.Transfer(子页面特点:地址栏中没有地址,鼠标右键属性中显示父页面的路径,保护子页面Url安全)
传递:Server.Transfer( "target.aspx?param1=1111¶m2=2222 ")
接收:string str = Request[ "param1 "]
接收:
a.aspx的C#代码

publicstring Name
{
get{ return Label1.Text;}
}
privatevoid Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("b.aspx");
}

b.aspx中C#代码
privatevoid Page_Load(object sender, EventArgs e)
{
a newWeb= (a)Context.Handler;
string name;
name = newWeb.Name;
}
7 表单提交(可隐藏Url中的参数)
<form action= "target.aspx " method = "post " name = "form1 ">
<input name = "param1 " value = "1111 "/>
<input name = "param2 " value = "2222 "/>
</form>
....
form1.submit();
....
此种方在ASP。NET中无效,因为ASP。NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。
8 @PreviousPageType (可隐藏Url中的参数)
这个指令是.net 2.0中的一个新指令,用于处理ASP.NET 2.0提供的跨页面传送新功能.用于批定跨页面的传送过程起始于哪个页面.包含两个属性:
TypeName:设置回送时的派生类名
VirtualPath:设置回送时所传送页面的地址.
如下示例:
源页面WebForm1.aspx中有一个TextBox,ID为txtName.在WebForm1.aspx.cs中设置一个属性:
public TextBox Name
{
get{return this.txtName;}//返回一个控件对象
}
在目标页面的设计文件中(WebForm2.aspx)的最上方加上:
<%@ PreviousPageType VirtualPath="~/Page1.aspx"%>,
然后就能引用WebForm1.aspx中定义的属性了.
在WebForm2.aspx.cs中可以有如下引用形式(假设WebForm2.aspx中有一个ID为lblName的Label):
lblName.Text="Hello"+PreviousPage.Name.Text+"<br />";
9 postbackUrl (可隐藏Url中的参数)
首先在asp.net中只有Button linkButton imgButton有postbackUrl属性可以用来跨页传递控件的值
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="index.aspx" />
Index.aspx:
if(Page.PreviousPage!=null)
{
if(Page.PreviousPage.IsCrossPagePostBack)
{
TextBox textControl=this.PreviousPage.FindControl("TextBox1") as TextBox;
if(textControl.Text!=null)
{
this.Label1.Text = textControl.Text;
}
}
}
PreviousPage:代表传递值的页面
IsCrossPagePostBack:判断页面是不是跨页传值
FindControl:获得控件的值
ASP.NET页面传值不使用QueryString的更多相关文章
- ASP.NET页面传值与跳转
asp.net页面传值的五种方法:QueryString,Session,Application,Request.Cookies,Server.Transfer 其中Cookie和Server.Tra ...
- ASP.NET页面传值的几种方式
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值. 存储对象传值.ajax.类.model.表单等!下面欧柏泰克和大家一起来看看asp.net页面传值方式一般有哪些?常用的较简单 ...
- ASP.Net页面传值比较
ASP.Net页面传值比较 作为一个ASP.Net程序员,尤其是搞B/S开发的,对于不同页面之间变量值的传递用的非常广泛,而掌握不同方式之间的区别和特点也就很有必要.本文将针对这一知识点做一个简单 ...
- Asp.net 页面传值的方法
ASP.NET页面传值的方法 From:Refresh-air 在面试的时候,经常会遇到这样的问题,其实我们会对其中的几种方法比较熟悉,因为项目中经常使用.但是要全面的回答ASP.NET中页面传值的方 ...
- ASP.NET页面传值的方法
ASP.NET页面传值的方法 From:Refresh-air 在面试的时候,经常会遇到这样的问题,其实我们会对其中的几种方法比较熟悉,因为项目中经常使用.但是要全面的回答ASP.NET中页面传值的方 ...
- net面试 ASP.NET页面传值的各种方法和分析 (copy)
Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题 ...
- C/S ASP.NET页面传值汇总
一. QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不 ...
- asp.net页面传值方法汇总
1. Get(即使用QueryString显式传递) 方式:在url后面跟参数. 特点:简单.方便. 缺点:字符串长度最长为255个字符:数据泄漏在url中. 适用数据 ...
- ASP.NET页面传值之Server.Transfer 和Response.Direct
先看实例: B.apsx: public string TextBox1Text { get { ...
随机推荐
- Lucene.Net+盘古分词->开发自己的搜索引擎
//封装类 using System;using System.Collections.Generic;using System.Linq;using System.Web;using Lucene. ...
- css1-css3的那些模糊点
css很重要, 但也不是万能的, 也不能抛弃dom 元素和 元素的属性!! 很多时候, dom "元素" 的 "属性" 也很重要 也很实用! 要结合属性来写 包 ...
- thinkphp- 许愿墙-1
控制器的方法, 要显示的模板默认的跟方法名相同. 也可以不同, 但应该 仍然是对应文件夹下的html模板文件: $this->display('其他的模板html文件名, 不用加html扩展名' ...
- NERD_commenter——VIM批量注释与反注释插件
转自:http://www.xefan.com/archives/83568.html 这是对程序员非常实用的一款插件,支持多种语言的补全,还支持单行注释,批量注释,等各种命令映射. 使用方法,先下载 ...
- 如何在服务器上搭建git服务器
参考文章: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770 ...
- 如何修改mysql默认的数据库密码
1,首先链接到数据库 mysql -h 127.0.0.1 -uroot -p 2,选择数据库 use mysql; 3,修改user表的密码 UPDATE user SET Password=PAS ...
- 论Linux运维的一些基础安全知识和简单办法
不知不觉本人来北京也已经第三个年头了,从一个Linux小小鸟,开始,2012年我参加了第一份工作,其实现在想想其实我是幸运的,本来求学的时候,就没好好的学Linux,我认为有Cisco知识从上wind ...
- [译]了解AngularJS $resource
原文: https://learnable.com/books/angularjs-novice-to-ninja/preview/understanding-angularjs-resource-e ...
- angular $resource模块
目录(?)[-] 安装 应用resource 扩展resource 上一篇中讲到使用$http同服务器进行通信,但是功能上比较简单,angularjs还提供了另外一个可选的服务$resource, ...
- nginx专题
1.Nginx和php性能优化相关 专家向磊http://slaytanic.blog.51cto.com/2057708/1173021 2.Puppet利用Nginx多端口实现负载均衡http:/ ...