asp.net中页面之间传值我们用得最多的就是get,post这两种了,其它的如session,appliction,cookie等这些相对来说少用也不是常用的,只是在特殊情况下在使用了。

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

例子:(1)a.aspx

代码如下 复制代码
private void Button1_Click(object sender, System.EventArgs e)
{
  string s_url;
  s_url = "b.aspx?name=" + Label1.Text;
  Response.Redirect(s_url);
}

(2)b.aspx

代码如下 复制代码
private void Page_Load(object sender, EventArgs e)
{
  Label2.Text = Request.QueryString["name"];
}

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

实例

代码如下 复制代码
<form id="form1" action="GetUserInfo.aspx" method="post">

<table align="center" cellpadding="0" cellspacing="10px" border="0" style="width: 320px;border:1px solid gray;" >
<tr>
<td colspan="2" class="title" align="center">修改密码</td>
</tr>
<tr>
<td class="left">输入新密码:</td>
<td class="right">
<input type="password" id="userPwd" name="userPwd" style="width: 175px" />
</td>
</tr>
<tr>
<td class="left">&nbsp;&nbsp;确认密码:</td>
<td class="right">
<input type="password" id="verifyPwd" name="verifyPwd" style="width: 175px" />
</td>
</tr>
<tr>
<td colspan="2" style="text-align: center">
<hr />
(www.111cn.net) <input type="hidden" name="username" value="<%=后台定义的变量读数据库时赋值%>"/></td>
<input type="submit" value="修改" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>

有一个方法,根据POST和GET分别取值。

代码如下 复制代码
public object string GetValueFromPage(string inputName,int type)
{
HttpContext rq = HttpContext.Current;
object TempValue = "";

if (type==1)
{
if (rq.Request.Form[inputName] != null)
{
TempValue = rq.Request.Form[inputName];
}

}
else if (type==0)
{
if (rq.Request.QueryString[inputName] != null)
{
TempValue = rq.Request.QueryString[inputName];
}
}
return TempValue;
}

那么当提交至GetUserInfo.aspx页面时,GetUserInfo.aspx.CS中可以这样获取值。

下面介绍一下其它的传值缺点和优点

cookie
方式:将数据存在客户端的经典方法。
缺点:安全性低、受客户端设置限制、一个站点仅存20个cookie,每个容量4096字节。

Session
方式:将用户数据存储在伺服端。
特点:asp.net中可以设置session的存储方式、位置、SessionID的保存是否依赖cookie。
可以直接存储对象。
缺点:asp.net中有失效的隐患
Cache
方式:将用户数据存储在伺服端数据缓存中。
特点:可以大大提高效率。 可以直接存储对象。
Appliction
方式: 将数据存储于此,相当于全局变量。
特点:可以直接存储对象。整个站点的共享数据
ViewState
方式:asp.net特有机制,用来恢复页面状态。
特点:将页面各控件及其所存数据序列化存在name为_ViewState的隐藏域中。
缺点:存在HTML中,安全性较低。可以设置加密和验证,但数据量会大增、效率有影响。
Static
方式: 将数据存于静态变量中。
特点:利于提高效率。
缺点:若用不好会致使用户或页面间数据紊乱,造成极大的隐患。建议只赋值一次,绝对禁止为单个用户而更改此值。

总结:了上面这些我没人详细介绍的页面之间传值方法看起来真不适合我们常用的WEB中的普通的页面与页面之间传值了,只能适合于特殊的场合了。
from:http://www.111cn.net/net/net/42641.htm

asp.net页面之间传值方法详解的更多相关文章

  1. ASP.NET 页面之间传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

  2. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  3. asp.net iis URLRewrite 实现方法详解

    原文 asp.net iis URLRewrite 实现方法详解 实现非常简单首先你要在你的项目里引用两个dll:actionlessform.dll.urlrewriter.dll,真正实现重写的是 ...

  4. Angular.js中处理页面闪烁的方法详解

    Angular.js中处理页面闪烁的方法详解 前言 大家在使用{{}}绑定数据的时候,页面加载会出现满屏尽是{{xxx}}的情况.数据还没响应,但页面已经渲染了.这是因为浏览器和angularjs渲染 ...

  5. ASP.NET页面之间传值

    介绍: 在网页应用程序的开发中,页面之间的传值应该是最常见的问题了. 在这篇文章里,azamsharp 将为我们介绍一些ASP.NET页面传值的方式.本文所举的例子非常简单,仅仅包含了一个文本框和几个 ...

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

    1.  QueryString 当页面上的form以get方式向页面发送请求数据时,web server将请求数据放入一名为QEURY_STRING的环境变量中,QeueryString方法从这个变量 ...

  7. ASP.NET页面之间传值Server.Transfer(4)

    这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效. Serve ...

  8. ASP.NET页面之间传值的方式之Cookie(个人整理)

    Cookie Cookie 提供了一种在 Web 应用程序中存储用户特定信息的方法.例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息.当该用户再次访问您的网站时,应用程序 ...

  9. ASP.NET页面之间传值Cookie(3)

    这个也是大家常使用的方法,Cookie用于在用户浏览器上存储小块的信息,保存用户的相关信息,比如用户访问某网站时用户的ID,用户的偏好等, 用户下次访问就可以通过检索获得以前的信息.所以Cookie也 ...

随机推荐

  1. Unity3d 屏幕截图。并保存。iOS

    - ( void ) imageSaved: ( UIImage *) image didFinishSavingWithError:( NSError *)error contextInfo: ( ...

  2. Jquery——几个注意的小知识

    event.stopPropagation() 停止事件冒泡 event.preventDefault()//组织默认行为(例如错误的时候,阻止按钮提交) event.type获取事件类型 event ...

  3. Ubuntu IntelliJ IDEA 注冊碼與Gradle相關

    一.Ubuntu IntelliJ IDEA 注冊碼 在线免费生成IntelliJ IDEA 15.0(16.+)注册码 注冊參考:https://www.iteblog.com/idea/ 依次选择 ...

  4. 12 个非常实用的 jQuery 代码片段

    jQuery是一个非常流行而且实用的JavaScript前端框架,本文并不是介绍jQuery的特效动画,而是分享一些平时积累的12个jQuery实用代码片段,希望对你有所帮助. 导航菜单背景切换效果 ...

  5. MySQL登陆小问题

    root用户创建用户 CREATE USER gechong IDENTIFIED BY 'gechong'; 登录数据库时提示错误: C:\Users\gechong>mysql -u gec ...

  6. Npoi导出excel整理(附源码)

    前些日子做了一个简单的winform程序,需要导出的功能,刚开始省事直接使用微软的组件,但是导出之后发现效率极其低下,绝对像web那样使用npoi组件,因此简单的进行了整理,包括直接根据DataTab ...

  7. Java 安装和变量环境配置

    //1.分别安装sdk和jre,需要2个均安装才是完整的 //1)jdk_8u60_windows_i586_V8.0.600.27.1440040557 //2)jre_8u60_windows_i ...

  8. 利用XAMPP搭建PHP开发环境,解决443端口被占用

    为了方便,作为学习使用的PHP环境,我们可以直接使用Apache+mysql+php集成开发环境.这样的集成软件有appserv和xampp,这里我们以xampp为例. 首先下载xampp软件,下载地 ...

  9. Linux系统下批量创建用户

    Linux批量创建用户 [root@ldapserver ~]# ) ; do useradd -d /home/ldapuser$i ldapuser#i; done [root@ldapserve ...

  10. Paint的基本使用

    代码地址如下:http://www.demodashi.com/demo/14712.html 前言 在讲述自定义控件的时候,我们讲到了自定义控件的基本步骤,那么在自定义控件中,我们第一个需要了解的就 ...