1.QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:
 
private void Button1_Click(object sender, System.EventArgs e)
{ string s_url;
s_url = "b.aspx?name=" + Label1.Text;
Response.Redirect(s_url);
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
Label2.Text = Request.QueryString["name"];
}
 
query传值又分类post ,get格式如:
//post请求
string name = Request["name"].toString();
string name =Request.Form.Get("name").toString();
//get请求
string name = Request.QueryString["name"].toString();
 
但我发现 不论是post 和 get 传值都可用
string name = Request["name"].toString();
 
表单提交中get和post方式的区别归纳如下几点:
1. get是从服务器上获取数据,post是向服务器传送数据。 
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。 
3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。 
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。 
5. get安全性非常低,post安全性较高。
2.  使用Application 对象变量
  Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
Application["name"] = Label1.Text; Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name;
Application.Lock();
name = Application["name"].ToString();
Application.UnLock();
}
 
3.  使用Session变量
  想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = Label.Text;
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e) {
string name;
name = Session["name"].ToString();
}
 
4.  使用Cookie对象变量
  这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。
a.aspx的C#代码
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookie cookie_name = new HttpCookie("name");
cookie_name.Value = Label1.Text;
Reponse.AppendCookie(cookie_name);
Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
string name; name = Request.Cookie["name"].Value.ToString();
}
5.  使用Server.Transfer方法
  这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
 
a.aspx的C#代码
public string Name {
get{ return Label1.Text;}
}
private void Button1_Click(object sender, System.EventArgs e) {
Server.Transfer("b.aspx");
}
b.aspx中C#代码
private void Page_Load(object sender, EventArgs e) {
a newWeb; //实例a窗体
newWeb = (source)Context.Handler;
string name; name = newWeb.Name;
}
 
下面介绍一下传值缺点和优点
cookie
     方式:将数据存在客户端的经典方法。
     缺点:安全性低、受客户端设置限制、一个站点仅存20个cookie,每个容量4096字节。
Session
     方式:将用户数据存储在服务端。
     特点:asp.net中可以设置session的存储方式、位置、SessionID的保存是否依赖cookie。
             可以直接存储对象。 
     缺点:asp.net中有失效的隐患
Cache
     方式:将用户数据存储在服务端数据缓存中。 
     特点:可以大大提高效率。 可以直接存储对象。
Appliction
     方式: 将数据存储于此,相当于全局变量。 
     特点:可以直接存储对象。整个站点的共享数据
ViewState
     方式:asp.net特有机制,用来恢复页面状态。 
     特点:将页面各控件及其所存数据序列化存在name为_ViewState的隐藏域中。
     缺点:存在HTML中,安全性较低。可以设置加密和验证,但数据量会大增、效率有影响。
Static
     方式: 将数据存于静态变量中。 
     特点:利于提高效率。
     缺点:若用不好会致使用户或页面间数据紊乱,造成极大的隐患。建议只赋值一次,绝对禁止为单个用户而更改此值。
 
 
 
ASP.NET 内置对象包括 1.Response 2.Request  3.Server  4.Application   5.Session   6.Cookie
1 Request对象主要是让服务器取得客户端浏览器的一些数据,包括从HTML表单用Post或者GET方法传递的参数、Cookie和用户认证。
2 Request对象是Page对象的成员之一。
3 程序中不需要做任何的声明即可直接使用;其类名为 HttpRequest属性很多,但方法很少,只有一个BinaryRead()
1.使用Request.Form属性获取数据
  通过该属性,读取之间的表单数据.
注意:提交方式要设置为“Post”。与Get方法相比较,使用Post方法可以将大量数据发送到服务器端
2.利用Request.QueryString属性获取数据
  Request对象的QuerySting属性可以获取 HTTP 查询字符串变量集合 。 通过该属性,我们可以读取地址信息  http://localhost/aaa.aspx?uid=tom&pwd=abc其中标识为红色部分的数据.注意:提交方式要设置为“Get”
3.问题:Request.Form用于表单提交方式为Post的情况,而Request.QueryString用于表单提交方式为Get的情况,如果用错,则获取不到数据。
解决方法:利用Request(“元素名”)来简化操作。

Response对象:将数据从服务器发送到浏览器
     1. <%=…%>Response.Write("alert('欢迎学习ASP.NET')")
   Response.Write(" ")

  2.Response对象的Redirect方法将客户端浏览器重定向到另外的URL上,即跳转到另一个网页。例如:Response.Redirect("http://www.example.com/") 
  3. Response.End() 终止当前页的运行
  4.Response.WriteFile(FileName)其中:FileName 指代需向浏览器输出的文件的文件名
Server对象提供对服务器上的方法和属性进行的访问 .其类名称是HttpServerUtility.
  Server对象的主要属性有
  MachineName:获取服务器的计算机名称。
  ScriptTimeout:获取和设置请求超时(以秒计)。
 
方法名称 说明
  CreateObject 创建 COM 对象的一个服务器实例。
  Execute 执行当前服务器上的另一个aspx页,执行完该页后再返回本页继续执行
  HtmlEncode 对要在浏览器中显示的字符串进行HTML编码并返回已编码的字符串。
  HtmlDecode 对HTML编码的字符串进行解码,并返回已解码的字符串。
  MapPath 返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。
  Transfer 终止当前页的执行,并为当前请求开始执行新页。
  UrlEncode 将代表URL的字符串进行编码,以便通过 URL 从 Web 服务器到客户端进行可靠的 HTTP 传输。
  UrlDecode 对已被编码的URL字符串进行解码,并返回已解码的字符串。
  UrlPathEncode 对 URL 字符串的路径部分进行 URL 编码,并返回已编码的字符串。
  编码:Server.HtmlEncode(“HTML代码”)
  解码:Server.HtmlDecode(“已编码的HTML”)
  1.Server对象的MapPath方法将虚拟路径或相对于当前页的相对路径转化为Web 服务器上的物理文件路径。 
语法:
Server.MapPath(“虚拟路径”)
String FilePath
FilePath = Server.MapPath(“/”)
Response.Write(FilePath)
 
 
Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据。而且Application对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。
 
 1.使用Application对象保存信息Application(“键名”) = 值或Application(“键名”,值)
获取Application对象信息变量名 = Application(“键名”)
或:变量名 = Application.Item(“键名”)
或:变量名 = Application.Get(“键名”) 更新Application对象的值
  Application.Set(“键名”, 值)
  删除一个键
  Application.Remove(“键名”, 值)
  删除所有键
  Application.RemoveAll()或Application.Clear()
2.有可能存在多个用户同时存取同一个Application对象的情况。这样就有可能出现多个用户修改同一个Application命名对象,造成数据不一致的问题。HttpApplicationState 类提供两种方法 Lock 和 Unlock,以解决对Application对象的访问同步问题,一次只允许一个线程访问应用程序状态变量。
  关于锁定与解锁
  锁定:Application.Lock()
  访问:Application(“键名”) = 值
  解锁:Application.Unlock()
  注意:Lock方法和UnLock方法应该成对使用。  可用于网站访问人数,聊天室等设备。
3. 使用Application事件 
  在ASP.NET 应用程序中可以包含一个特殊的可选文件——Global.asax 文件,也称作ASP.NET 应用程序文件,它包含用于响应 ASP.NET或HTTP模块引发的应用程序级别事件的代码。Global.asax 文件提供了7个事件,其中5个应用于Application对象 
  事件名称 说明
  Application_Start 在应用程序启动时激发
  Application_BeginRequest 在每个请求开始时激发
  Application_AuthenticateRequest 尝试对使用者进行身份验证时激发
  Application_Error 在发生错误时激发
  Application_End 在应用程序结束时激发
 

Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。
Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。
(1)将新的项添加到会话状态中
   语法格式为:
  Session ("键名") = 值
  或者
  Session.Add( "键名" , 值)
(2)按名称获取会话状态中的值
  语法格式为:
  变量 = Session ("键名")
  或者
  变量 = Session.Item("键名")
(3)删除会话状态集合中的项
  语法格式为:Session.Remove("键名")
(4)清除会话状态中的所有值
  语法格式为:Session.RemoveAll()
  或者Session.Clear()
(5)取消当前会话
  语法格式为:Session.Abandon()
(6)设置会话状态的超时期限,以分钟为单位。
  语法格式为:Session.TimeOut = 数值
  Global.asax 文件中有2个事件应用于Session对象
  事件名称 说明
  Session_Start 在会话启动时激发
  Session_End 在会话结束时激发
 
 
 Cookie就是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。信息的片断以‘键/值’对的形式存储。
  Cookie是保存在客户机硬盘上的一个文本文件,可以存储有关特定客户端、会话或应用程序的信息,在.NET中对应HttpCookie类。
有两种类型的Cookie:会话Cookie(Session Cookie)和持久性Cookie。
前者是临时性的,一旦会话状态结束它将不复存在;
后者则具有确定的过期日期,在过期之前Cookie在用户的计算机上以文本文件的形式存储。在服务器上创建并向客户端输出Cookie可以利用Response对象实现。
 
HttpCookie cookie = Request.Cookie["user"];//创建cookie对象
cookie.Expires = DateTime.MaxValue;//设置过期时间
cookie.Values.Add("Iaddress",a);//添加Cookie值
Response.AppendCookie(cookie); //将cookie添加到服务器相应
response.cookies[""].Values = 数据;//写入数据,将服务器端的数据写入客户端
string c =request. cookie.Values["address"];//读取数据

C#开发学习——.net C#中页面之间传值传参的方法以及内置对象的更多相关文章

  1. .net C#中页面之间传值传参的六种方法

    1.QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能 ...

  2. C#中页面之间传值传参的六种方法

    QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这 ...

  3. asp.net页面与页面之间传参数值

    一.利用POST传值 传值asp文件send.aspx  代码如下 复制代码 <form id="form1" runat="server" action ...

  4. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  5. JSP中的内置对象和Struts中的Web资源的详解

    JSP中的内置对象有如下几种: request :继承于HttpServletRequest, HttpServletRequest继承ServletRequest, 获得的Request对象的方法: ...

  6. ASP中页面之间传递值的几种方式

    ASP.NET页面之间传递值的几种方式 页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryS ...

  7. 【微信小程序】mpvue中页面之间传值(全网唯一真正可行的方法,中指推了一下隐形眼镜)

    摘要: mpvue中页面之间传值(注意:是页面之间,不是组件之间) 场景:A页面跳转B页面,在B页面选择商品,将商品名带回A页面并显示 使用api: getCurrentPages step1: A页 ...

  8. ASP.NET页面之间的几种传值方法

    首先是QueryString方法传值: QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法 ...

  9. java web学习总结(二十五) -------------------JSP中的九个内置对象

    一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...

随机推荐

  1. Reward(拓扑排序)

    http://acm.hdu.edu.cn/showproblem.php?pid=2647 题意: 老板要给n个员工发工资最低工资是888: 但是工人们是有要求的 如果输入 a b 表示a的工资要比 ...

  2. Fill-倒水问题(Uva-10603-隐式图路径寻找问题)

    原题:https://uva.onlinejudge.org/external/106/10603.pdf 有三个没有刻度的杯子,它们的容量分别是a, b, c, 最初只有c中的杯子装满水,其他的被子 ...

  3. 说一说高级男装面料_SuMisura_新浪博客

    说一说高级男装面料_SuMisura_新浪博客 说一说高级男装面料

  4. 414. Third Maximum Number

    这个题有点坑啊..主要是自己蠢,以为 Integer.MIN_VALUE -1 == -2147483649 public class Solution { public int thirdMax(i ...

  5. Jemter

    1.我们需要创建批量数据 2.jemter连接数据库 3.调用外部数据 4.我要获取的值原本服务器返回的结果是:以下是左边界和右边界.提取想要的数值

  6. [置顶] Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)

    无论在Window应用程序,还是Web应用程序以对用户友好的方式显示运行时的异常都是很有必要,尤其对于可能有很多不确定因素导致异常的Web应用程序;在传统的Web开发中,处理异常的方式——设计专门一个 ...

  7. 为什么使用spring Struts 等框架开发

    转载自:http://www.cnblogs.com/sharpxiajun/p/3936268.html 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入, ...

  8. Python入门基础教程(儿童版) [分享一本入门级教程]

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1. 推荐书名 No Starch--Python for ...

  9. backgroundworker组件的使用

    本文转载:http://www.cnblogs.com/inforasc/archive/2009/10/12/1582110.html BackgroundWorker 组件用来执行诸如数据库事务. ...

  10. PyCharm4注册码

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 name : newasp == ...