仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 567|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之ASP.NET页面间数据传送的9种办法

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:21:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
感觉很多控件都必须自己去写代码;用了WebMatrix感觉也不是很好,毕竟没有很强的WYSIWYG效果。现在就不知道如何是好了。</p>本文我们将会商的是ASP.NET页面间数据传送的几种办法,对此但愿能匡助人人准确的了解ASP.NET页面间数据传送的用途和便当性。
0、弁言
Web页面是无形态的,服务器对每次哀求都以为来自分歧用户,因而,变量的形态在一连对统一页面的屡次哀求之间或在页面跳转时不会被保存。在用ASP.NET计划开辟一个Web体系时,碰到一个主要的成绩是怎样包管数据在页面间举行准确、平安和高效地传送,Asp.net供应了形态办理等多种手艺来办理保留和传送数据成绩,以上去切磋.NET下的办理此成绩的各类办法和各自的合用场所。
1、ASP.NET页面间数据传送的各类办法和剖析
1.1利用Querystring办法
QueryString也叫查询字符串,这类办法将要传送的数据附加在网页地点(URL)前面举行传送。如页面A.aspx跳转到页面B.aspx,能够用Request.Redirect("B.aspx?参数称号=参数值")办法,也能够用超链接:,页面跳转后,在方针页面中可用Ruquest["参数称号"]来吸收参数。利用QuerySting办法的长处是完成复杂,不利用服务器资本;弱点是传送的值会显现在扫瞄器的地点栏上,有被改动的风险,不克不及传送工具,只要在经由过程URL哀求页时查询字符串才是可行的。
1.2使用埋没域
埋没域不会显现在用户的扫瞄器中,通常为在页面中到场一个埋没控件,与服务器举行交互时把值赋给埋没控件并提交给下一页面。埋没域能够是任何存储在网页中的与网页有关的信息的存储库。利用埋没域存进数值时用:hidden控件.value=数值,掏出吸收数值时用:变量=hidden控件.value。利用埋没域的长处是完成复杂,埋没域是尺度的HTML控件,不必要庞大的编程逻辑。埋没域在页上存储和读取,不必要任何服务器资本,几近一切扫瞄器和客户端设备都撑持具有埋没域的窗体。弱点是存储布局少,仅仅撑持复杂的数据布局,存储量少,由于它被存储在页面自己,以是没法存储较年夜的值,并且年夜的数据量会遭到防火墙和代办署理的制止。
1.3ViewState
ViewState是由ASP.NET页面框架办理的一个埋没的窗体字段。当ASP.NET实行某个页面时,该页面上的ViewState值和一切控件将被搜集并格局化成一个编码字符串,然后被分派给埋没窗体字段的值属性。利用ViewState传送数据时可用:ViewState["变量名"]=数值,在掏出数据时用:变量=ViewState["变量名"]。利用ViewState的长处是:在对统一页的多个哀求间主动保存值,不必服务器端资本,完成复杂,视图形态中的值经由哈希盘算和紧缩,而且针对Unicode完成举行编码,其平安性要高于利用埋没域;弱点是由于ViewState存储在页面自己,因而假如
存储较年夜的值,用户显现页和发送页时的速率大概会减慢。固然视图形态以哈希格局存储数据,但它仍能够被改动。
1.4利用Cookie
Cookie能够在页面之间传送大批信息,能够存储在客户真个文本文件中,也可存储在客户真个内存中。Cookie办法合用于存储大批页面中常常修改的信息,如为上岸过的网站保留上岸用户名,为用户输出供应便利,另有在一些用户自界说项目上保留用户的本性化设置。利用Cookie传送数据时可用:Response.Cookies["键名"]=键值;掏出数据用:变量名=Request.Cookies["键名"]。利用Cookie长处是:Cookie存储在客户端,不利用服务器资本,完成复杂,可设置到期工夫。弱点是:能够存储的数据量对照少,因为Cookie其实不被一切的扫瞄器撑持,并且还大概被用户克制或删除,以是不克不及用于保留关头数据。别的,Cookie保留的情势是复杂的明文文本,在它内里不宜保留敏感的、未加密的
数据。
1.5利用Application变量
利用Application变量也能够完成页面间的传值,Application变量是全局性的,一切用户共享一个Application变量,一旦界说,它将影响到程序的一切部分。假如想在全部使用程序局限利用某个变量值Application工具将是最好的选择。存进数据时,把值增加到Application变量里:Application["变量名"]=数值;掏出数据用:变量=Application["变量名"];在不必要利用该Application时,要显式扫除它:Application["量名"]=null。
Application长处:易于利用,全局局限。可供给用程序中的一切页来会见。弱点:若保留数据的服务器端历程被破坏(如因服务器溃散、晋级或封闭而破坏),那末数据就会丧失,以是使用Application必定要有保底的战略;占用服务器真个内存,这大概会影响服务器的功能和使用程序的可伸缩性。
1.6利用Session变量
Session工具能够用来存储必要保护的指定对话的信息,分歧的客户端天生分歧的Session工具。Session用于存储特定于独自会话的短时间信息。Session的利用办法和格局与Application不异。
长处:易于完成,而且供应较高的平安性和耐久性,能够应对IIS重启和帮助历程重启,可在多历程中利用。弱点是耗用服务器真个内存。以是不要存储大批的信息。Session最多见的用处是与Cookie一同向Web使用程序供应用户标识功效,Session也可用于不撑持Cookie的扫瞄器。可是,利用无Cookie的Session必要将会话标识符安排在查询字符串中,一样会碰到本文在查询字符串一节中报告的平安成绩。
1.7利用类的静态属性
这类办法是使用类的静态属性完成两个页面间的值传。界说一个包括静态属性的类;将要传送的值赋给静态属性;方针页面中能够经由过程静态属性取得源页面中要传的值。
长处是能够便利传送多个数据,弱点是必要分外编程,增添程序计划的事情量,占用服务器内存。
1.8利用Server.Transfer
经由过程Server.Transfer办法把实行流程从以后的ASPX文件转到统一服务器上的另外一个ASPX页面的同时,可保存表双数据或查询字符串,做法是把该办法的第二个参数设置成True,在第一个页面用Server.Transfer("方针页面名.aspx",true);方针页面掏出数据用:Ruquest.Form["控件称号"]或Ruquest.QueryString["控件称号"]。Asp.net2.0中还能够如许来用,代码以下:
PreviousPagepg1;
pg1=(PreviousPage)Context.Handler;
Response.Write(pg1.Name);
申明:此段代码用在方针页面中掏出传送的值,Previous-Page是原页面的类名,Name是在原页面界说的属性,必要传送的数据存进到此属性中。
利用这类办法,必要写一些代码以创立一些属性以即可以在另外一个页面会见它,能够在另外一个页面以工具属性的体例来存取数值,这个办法在页面间值传送中是出格有效的,这类办法不仅简便,同时又是面向工具的。
1.9Cache
Cache具有壮大的数据操纵功效,以键值对汇合的情势存储数据,能够经由过程指定关头字来拔出和检索数据项。它的基于依赖性的停止功效,使它可以准确把持怎样并实时更新和打消缓存中的数据。它能够外部举行锁定办理,不必要象Application工具那样利用Lock()和Unlock()办法举行串行化办理。弱点是利用办法较庞大,利用不妥反而下降功能.
2、分歧页面跳转情形下可接纳的传值办法
2.1情形一:源页面能够跳转到方针页面,源页面传送数据给方针页面
利用查询字符串,将大批信息从一页传输到另外一页和不存在平安性成绩时,是一个复杂经常使用的办法;利用Server.Transfer办法,可传送表双数据或查询字符串到另外一个页面,还能够保留初始页的HttpContext,当方针页和源页面在统一个服务器时,能够用此办法。
2.2情形二:页面传送数值给本身页面
即在对统一页的多个哀求间保存值,ViewState属性可供应具有基础平安性的功效。也可用埋没域,存储大批回发到本身或另外一页的页信息时利用,不思索平安性成绩时利用。
2.3情形三:源页面传送数值给方针页面,而源页面不克不及间接毗连到方针页面。
有多个办法,详细用哪一个要看详细情形。
Application:存储由多个用户利用且变动不频仍的全局信息,此时平安性不成为成绩。不要存储大批的信息。Session:存储特定于独自会话的短时间信息,而且必要较高的平安性。不要在会话形态中存储大批的信息。必要注重,将为使用程序中每会话的保存期创立并保护会话形态工具。在撑持很多用户的使用程序中,这大概会占用大批服务器资本并影响可缩放性。
Cookie:当您必要在客户端存储大批信息和不存在平安性成绩时利用。类的静态属性,便利传送多个数据。
Cache:工具用于单个用户、一组用户或一切的用户。能够为多个哀求长工夫、高效力的保留数据。上述几个办法,不但用于情形三,后面两种情形都可使用,只是没有需要时只管罕用,不然会形成资本华侈或增添程序的庞大性。
原文:http://www.ckuyun.com/gsanidt/archive/2009/12/15/1624553.html
其实Java之所以在曾经独步天下,就是因为他的跨平台、安全性,这两方面,效率可不是Java的强项,反而是他最短的一块挡板,虽然net总是用理论证明比.NET快。
只想知道 该用户已被删除
沙发
发表于 2015-1-19 09:13:42 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
莫相离 该用户已被删除
板凳
发表于 2015-1-24 12:39:10 来自手机 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-1 12:10:26 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
山那边是海 该用户已被删除
5#
发表于 2015-2-7 05:19:39 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
再现理想 该用户已被删除
6#
发表于 2015-2-20 16:41:27 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
因胸联盟 该用户已被删除
7#
发表于 2015-3-6 18:39:51 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
分手快乐 该用户已被删除
8#
发表于 2015-3-13 05:46:15 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
变相怪杰 该用户已被删除
9#
发表于 2015-3-20 14:23:17 | 只看该作者
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-27 08:24

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表