zoukankan      html  css  js  c++  java
  • asp.net页面间传递数据的方法(ZZ)

    asp.net页面间数据传递(总结篇)

    1. Get(即使用QueryString显式传递)
         方式:在url后面跟参数。
         特点:简单、方便。
         缺点:字符串长度最长为255个字符;数据泄漏在url中。
         适用数据:简单、少量、关键的数据。
         适用范围:传递给自己、传递给另一个目标页面;常用于2个页面间传递数据。
         用法:例如:url后加?UserID=…,跳转到目标页面,目标页面在伺服端可用Request.QueryString["InputText"]获取其指定参数值。

         //例如:window.open("DetailInfo.aspx" + "?name=" + document.getElementById("name").value);
    2. Post
         方式:通用的方式。利用form提交。
         特点:最常用的方法。常用技巧是把隐秘的数据存在隐藏域中由form提交。
         适用数据:大量数据,包括文件上传。
         适用范围:同Get方法
         用法:在客户端form指定action目标后submit、在asp.net的伺服端中使用server.Transfer(url)提交;在伺服端中用Request.Form["FormFieldID"]获取。

        //例如:window.open("DetailInfo.aspx")

    3. 页面对象的属性
         方式:asp.net特有方式 。利用HttpContext获取发请求的页面的信息。
         特点:可以直接存储对象。
         缺点:注意强制转换的类型要正确。
         适用数据:各种数据。
         适用范围:页面之间传递复杂数据。
         用法:获取Context.Handler将其转换为发请求的页面的实例,随后就可以轻松访问其form中的字段、甚至属性。其中的Context是指 HttpContext对象,Handler是其属性,Context.Handler的意思可以理解为创建源页类的实例变量,而得到此实例之后,就可以 直接访问其中的属性和Public方法了。
    4. cookie
         方式:将数据存在客户端的经典方法。
         缺点:安全性低、受客户端设置限制、一个站点仅存20个cookie,每个容量4096字节。
         有效期:自定义或被用户清除
         适用数据:用户的会话数据(一般是用户名,用户的个性化设置信息等)
         适用范围:单个用户、整个站点所有页面
         用法:引用Request.Cookies(读取信息)、Response.Cookies(写入信息)、或用HttpCookieCollection直接创建Cookie对象。
    5. Session
         方式:将用户数据存储在伺服端。
         特点:asp.net中可以设置session的存储方式、位置、SessionID的保存是否依赖cookie。
                 可以直接存储对象。
         缺点:asp.net中有失效的隐患
         有效期:用户活动时间+自定义延迟。
         适用数据:用户的特有信息。
         适用范围:单个用户、整个站点所有页面。
         用法:Session["CollectionName"] = value/object;
    6. Cache
         方式:将用户数据存储在伺服端数据缓存中。
         特点:可以大大提高效率。 可以直接存储对象。
         缺点:数据更新不及时。
         有效期:应用程序生命周期或自定义。
         适用数据:所有页面、所有用户都可以共享的数据。
         用法:Cache["CollectionName"] = value|object;
    7. Appliction
         方式: 将数据存储于此,相当于全局变量。
         特点:可以直接存储对象。整个站点的共享数据。
         有效期:应用程序生命周期。
         适用数据:所有页面、所有用户共享的数据。
         用法:Appliction["CollectionName"] = value|object;
    8. ViewState
         方式:asp.net特有机制,用来恢复页面状态。
         特点:将页面各控件及其所存数据序列化存在name为_ViewState的隐藏域中。
         缺点:存在HTML中,安全性较低。可以设置加密和验证,但数据量会大增、效率有影响。
         适用数据:页面PostBack需要保存的数据,数据太大会影响页面发送效率。
         适用范围:页面自身数据保存。
         用法:ViewState["CollectionName"] = value;
    9. Static
         方式: 将数据存于静态变量中。
         特点:利于提高效率。
         缺点:若用不好会致使用户或页面间数据紊乱,造成极大的隐患。建议只赋值一次,绝对禁止为单个用户而更改此值。
         适用数据:所有用户共享的数据。
         适用范围:此类所有的页面实例。
         用法:在class中声明静态变量。
    整理:
         页面自身保存数据可用的有ViewState,static变量。
         页面之间传递数据常用get,post,HttpContext,当然可以变通一下用于自身数据保存。
         单用户的所有页面数据共享常用session,cookie,当然也可以应用在以上两种情况。
         整个应用程序(所有用户所用页面)的数据共享常用Appliction,cache,static变量。
    总结:   
         当然可以变通下灵活应用来解决问题,但是要选择合适的,常见到滥用Get和Session。
         建议在用Request的时候要指明所取的集合,比如Get方法传来的参数从QueryString集合取,Post的从Form取,cookie从 Cookies里取。虽然用Request[]集合,以上几种都可以取到,但是却造成性能上的浪费,本来直接在Form集合中,却遍历了 QueryString,Form,Cookies等集合才取出来。
    ps:在计算机的世界里,凡是提供服务的一方我们称为伺服端(server),而接受服务的另一方我们称作客户端(client)。

    ————————————————————————————————————————————————————————————————————————————

    1. < form id="form1" method="get" runat="server">    
    2.     < div>    
    3.         你的名字< asp:TextBox ID="name" runat="server">< /asp:TextBox>< br />    
    4.         < br />    
    5.         你的网站< asp:TextBox ID="website" runat="server">< /asp:TextBox>< br />    
    6.         < br />    
    7.         < br />    
    8.         < asp:Button ID="Button1" runat="server" Text="send" />< br />    
    9.         < br />    
    10.         < br />    
    11.         学习request 和 response的用法< br />    
    12.         < br />    
    13.         < br />    
    14.    < /div>    
    15. < /form>    
    16.    
    17.      
    18.    
    19. < form id="form2" method="post" runat="server">    
    20.     < div>    
    21.         你的名字< asp:TextBox ID="name2" runat="server">< /asp:TextBox>< br />    
    22.         < br />    
    23.         你的网站< asp:TextBox ID="website2" runat="server">< /asp:TextBox>< br />    
    24.         < br />    
    25.         < br />    
    26.         < asp:Button ID="Button2" runat="server" Text="send" />< br />    
    27.         < br />    
    28.         < br />    
    29.         学习request 和 response的用法< br />    
    30.         < br />    
    31.         < br />    
    32.     < /div>    
    33. < /form>    
    34.    
    35.   
    36. /*从URL中可看出ASP.NET Get和Post的区别.那么那如何编程实现数据的接收呢? 
    37. 第1种,接收用get 方法传输的数据的写法: 
    38. */  
    39.   
    40. protected void Page_Load(object sender, EventArgs e)    
    41.     {    
    42.         string id = Request.QueryString["name"];    
    43.         string website = Request.QueryString["website"];    
    44.         Response.Write(id + "< br>" + website);    
    45.    
    46.       Response.Write("你使用的是" + Request.RequestType + "方式传送数据");    
    47.    
    48.     }    
    49.   
    50. //第2种,接收用post 方法传输的数据的写法:  
    51.   
    52. protected void Page_Load(object sender, EventArgs e)    
    53.     {    
    54.           
    55.         string id2 = Request.Form["name2"];    
    56.         string website2 = Request.Form["website2"];    
    57.         Response.Write(id2 + "< br>" + website2);    
    58.    
    59.         Response.Write("你使用的是" + Request.RequestType + "方式传送数据");    
    60.    
    61.     }   
    
  • 相关阅读:
    Atitit.ati orm的设计and架构总结 适用于java c# php版
    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本
    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本
    Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
    Atitit. 软件设计 模式 变量 方法 命名最佳实践 vp820 attilax总结命名表大全
    Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
    Atitit 插件机制原理与设计微内核 c# java 的实现attilax总结
    atitit.基于  Commons CLI 的命令行原理与 开发
    atitit.基于  Commons CLI 的命令行原理与 开发
    atitit.js 与c# java交互html5化的原理与总结.doc
  • 原文地址:https://www.cnblogs.com/zhangjun1130/p/1981649.html
Copyright © 2011-2022 走看看