列举ASP.NET页面之间传递值的几种方式

 更新时间:2021年9月22日 10:01  点击:1512

1 .列举ASP.NET 页面之间传递值的几种方式。

1).使用QueryString, 如....?id=1; response. Redirect().... 
2).使用Session变量 
3).使用Server.Transfer

为了在页面之间传递变量内容,ASP.NET给了我们几个选择。一种选择是使用QueryString 属性

一:QueryString. 可以使用查询字符串请求网页。ASP.NET中的QueryString访问此信息。当你加载file.html?x = y时,它解析“x”和“y”。 首先,我们看到一个.aspx Web窗体页面,在用户访问Default.aspx时执行。这里的代码是代码隐藏部分Default.aspx.cs。

尝试在 URL 的末尾添加字符串“ ?param = dotnet ”。Response.Write将被触发。

基于: .NET QueryString示例:C#

using System;
using System.Web.UI;
public partial class _Default : Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
  string v = Request.QueryString["param"];
  if (v != null)
  {
   Response.Write("param is ");
   Response.Write(v);
  }
 }
}

结果, Page打印param查询的值,该值是字符串值: param is dotnet 。

两个参数。要继续,我们测试两个查询字符串URL参数。这是开发中相当普遍的要求。可能必须同时使用其中一个或两个。

带有多个参数的QueryString示例:C#

using System;
using System.Web.UI;
public partial class _Default : Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
  string v = Request.QueryString["param"];
  if (v != null)
  {
   Response.Write("param is ");
   Response.Write(v);
  }
  string x = Request.QueryString["id"];
  if (x != null)
  {
   Response.Write(" id detected");
  }
 }
}

测试代码这个网址: ?param=first&id=true

要进行测试,请在Internet浏览器(例如Internet Explorer或Firefox)的URL末尾键入测试URL。该字符串指定“param”查询等于“first”。并且“id”参数等于“true”。

Quote:可以使用键或索引访问的关联String键和String值的集合。

在QueryString上使用HasKeys的页面:C#

using System;
using System.Web.UI;
using System.Collections.Specialized;
public partial class _Default : Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
  // Get collection
  NameValueCollection n = Request.QueryString;
  // 查看是否存在任何查询字符串
  if (n.HasKeys())
  {
   // 获取第一个键和值
   string k = n.GetKey(0);
   string v = n.Get(0);
   // 测试不同的键
   if (k == "param")
   {
    Response.Write("param is " + v);
   }
   if (k == "id")
   {
    Response.Write("id is " + v);
   }
  }
 }
}

Request.QueryString还可以使用它们在查询字符串中的位置来检索此值。

private void Page_Load(object sender, 
System.EventArgs e)
{
this.txtBox1.Text = Request.QueryString[0];
this.txtBox2.Text = Request.QueryString[1];
}


foreach( string s in Request.QueryString)
{
Response.Write(Request.QueryString[s]);
}

要么

for (int i =0;i < Request.QueryString.Count;i++)
{
Response.Write(Request.QueryString[i]);
}

这种方法的缺点

  1. QueryString 有一个最大长度,如果你必须发送很多信息这种方法不起作用。
  2. QueryString 在您的浏览器的地址部分中可见,因此您不应将其与敏感信息一起使用。
  3. QueryString 不能用于发送&和空格字符。

用%20替换空格和用%26替换空格。

private void btnSubmit_Click(object sender, System.EventArgs e)
{
string p1 = this.txtName.Text.Replace("&","%26");
p1 = this.txtName.Text.Replace(" ","%20");
string p2 = this.txtLastName.Text.Replace("&","%26");
p2 = this.txtName.Text.Replace(" ","%20"); 
   "WebForm2.aspx?" + 
   "Name=" + p1 + 
   "&LastName=" + p2;
Response.Redirect(p2);
}

也可以使用Server.UrlEncode。Server.UrlEncode 方法更改查询字符串,以便它们不会产生问题。

private void btnSubmit_Click(object sender, System.EventArgs e)
{
Response.Redirect("WebForm2.Aspx?" + 
"Name=" + Server.UrlEncode(this.txtName.Text) + 
"&LastName=" + Server.UrlEncode(this.txtLastName.Text)); 
}

二、Session&Cookie

Session 使用简单,不仅能传递简单数据类型,还能传递对象。.数据量大小是不限制的。在Session变量存储大量的数据会消耗较多的服务器资源。容易丢失。在源页面的代码中创建你需要传递的名称和值构造Session变量: Session["Name"]="Value(Or Object) ";在目的页面的代码使用Session变量取出传递的值。 Result = Session["Nmae"] 注意:session不用时可以销毁它,销毁的方法是:清除一个: Session.Remove("session名") ;清除所有: Session.Clear();

string city = "Seattle"; 
// 保存到Web窗体页面类中的会话状态
Session["City"] = city; 
//从Web窗体页面类中的会话状态读取。 
city = (string)(Session["City"]); 
//在Web窗体页面类之外,使用HttpContext.Current。 
HttpContext context = HttpContext.Current; 
context.Session["FirstName"] = firstName; 
firstName = (string)(context.Session["FirstName"]);

Session类类似于键类型字符串和值类型对象的字典。这允许存储任何类型的变量,并稍后通过名称引用它。

什么是Cookies?

Cookie是在客户端的系统或客户端浏览器内存上创建的小文件(如果是临时的)。我们可以在客户端系统中存储小块信息,并在需要时使用它。 最有趣的是它与用户透明地工作 。它可以轻松地在Web应用程序的任何位置使用。 Cookies以纯文本格式存储信息 。如果Web应用程序使用cookie,则服务器发送cookie,客户端浏览器将存储它。然后,浏览器在下次请求页面时将cookie返回给服务器。使用cookie的最常见示例是 存储用户信息,用户首选项,密码记忆选项 等.Cookies有许多优点和缺点。

Cookies是如何开始的?

当客户端向服务器请求时,服务器将cookie发送到客户端。后续请求可以引用相同的cookie。例如,如果 codeproject.com 将会话ID存储为cookie,则当客户端第一次在服务器上命中时,服务器会生成会话ID并将其作为cookie发送到客户端

浏览器和Web服务器负责交换cookie信息。对于不同的站点,浏览器以不同的方式保留cookie 如果页面需要来自cookie的信息,当该URL被命中时,首先它在本地系统中搜索cookie信息,然后将其移动到具有该信息的服务器。

Cookies的优点

以下是在Web应用程序中使用cookie的主要优点:

它的使用和实现非常简单。

浏览器负责发送数据。

对于包含cookie的多个站点,浏览器会自动排列它们。

Cookie的缺点

它以简单的文本格式存储数据,因此根本 不安全 。

Cookie数据有一个大小限制( 4096字节/ 4KB )。

允许的最大cookie数量也是有限的。大多数浏览器将cookie的数量限制为20.如果新的cookie出现,旧的cookie将被丢弃。有些浏览器最多支持 300 个。

如何创建Cookie

要使用cookie,我们需要使用命名空间System.web。

方式1(使用HttpCookies类)

HttpCookie StudentCookies = new HttpCookie("StudentCookies");
StudentCookies.Value = TextBox1.Text;
StudentCookies.Expires = DateTime.Now.AddHours(1);
Response.Cookies.Add(StudentCookies);

方式2(直接使用Response)

Response.Cookies["StudentCookies"].Value = TextBox1.Text;
Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);

方式3(同一个cookie中的多个值)

Response.Cookies["StudentCookies"]["RollNumber"] = TextBox1.Text;
Response.Cookies["StudentCookies"]["FirstName"] = "Abhimanyu";
Response.Cookies["StudentCookies"]["MiddleName"] = "Kumar";
Response.Cookies["StudentCookies"]["LastName"] = "Vatsa";
Response.Cookies["StudentCookies"]["TotalMarks"] = "499";
Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);

查看代码,看看我们如何创建cookie并使用Web响应添加它。

已创建的cookie将一直存在,直到浏览器关闭。我们可以坚持使用cookie。

如何从Cookies中读取数据

现在是时候从cookie中检索数据了。在阅读cookie之前,首先我们需要检查是否找到了cookie。在阅读cookie之前检查cookie始终是一个好习惯,因为浏览器可能已禁用c​​ookie。

string roll = Request.Cookies["StudentCookies"].Value; //For First Way

string roll = Request.Cookies["StudentCookies"].Value; //For Second Way

string roll;
roll = Request.Cookies["StudentCookies"]["RollNumber"];
roll = roll + " " + Request.Cookies["StudentCookies"]["FirstName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["MiddleName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["LastName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["TotalMarks"];
Label1.Text = roll;

如何清除cookie信息?

我们可以在cookie文件夹中清除客户端机器上的cookie信息

设置到cookie对象的到期时间

userInfo.Expires = DateTime.Now.AddHours(1);

它会在一小时内清除cookie。

三、Application对象

Application对象的作用范围是整个全局,也就是说对所有用户都有效。它在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取。它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量。

举个例子:网站访问数。多个请求访问时都可以对它进行操作。

优点:1.使用简单,消耗较少的服务器资源。

2.不仅能传递简单数据,还能传递对象。

3.数据量大小是不限制的。

缺点:1.作为全局变量容易被误操作。所以单个用户使用的变量一般不能用application。

使用方法:1.在源页面的代码中创建你需要传递的名称和值构造Application变量:Application["Nmae"]="Value(Or Object)";

2.在目的页面的代码使用Application变量取出传递的值。Result = Application["Nmae"]

注意:常用lock和unlock方法用来锁定和解锁,为了防止并发修改。

string name; 
  Application.Lock(); 
  name = Application["name"].ToString(); 
  Application.UnLock();

四、Server.Transfer

终止当前页面的执行并开始执行当前请求的新页面。

Server.Transfer("Logon.aspx", true);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • PHP传值到不同页面的三种常见方式及php和html之间传值问题

    在项目开发中经常见到不同页面之间传值在web工作中,本篇文章给大家列出了三种常见的方式。接触PHP也有几个月了,本文总结一下这段日子中,在编程过程里常用的3种不同页面传值方法,希望可以给大家参考。有什么意见也希望大...2015-11-24
  • jQuery实现切换页面过渡动画效果

    直接为大家介绍制作过程,希望大家可以喜欢。HTML结构该页面切换特效的HTML结构使用一个<main>元素来作为页面的包裹元素,div.cd-cover-layer用于制作页面切换时的遮罩层,div.cd-loading-bar是进行ajax加载时的loading进...2015-10-30
  • 解决vue刷新页面以后丢失store的数据问题

    这篇文章主要介绍了解决vue刷新页面以后丢失store的数据问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-12
  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    这篇文章主要介绍了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 记一次EFCore类型转换错误及解决方案

    这篇文章主要介绍了记一次EFCore类型转换错误及解决方案,帮助大家更好的理解和学习使用asp.net core,感兴趣的朋友可以了解下...2021-09-22
  • 解决vuex数据页面刷新后初始化操作

    这篇文章主要介绍了解决vuex数据页面刷新后初始化操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
  • PHP页面转UTF-8中文编码乱码的解决办法

    对于乱码这个问题php开发者几乎都会有碰到过,我们下面主要是介绍了php文件乱码和页面乱码。PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题...2015-10-21
  • JavaScript 获取滚动条位置并将页面滑动到锚点

    这篇文章主要介绍了JavaScript 获取滚动条位置并将页面滑动到锚点的的相关资料,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下...2021-02-09
  • java后台实现js关闭本页面,父页面指定跳转或刷新操作

    这篇文章主要介绍了java后台实现js关闭本页面,父页面指定跳转或刷新操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-16
  • 微信小程序 页面跳转传递值几种方法详解

    这篇文章主要介绍了微信小程序 页面跳转传递值几种方法详解的相关资料,需要的朋友可以参考下...2017-01-16
  • vue实现在进行增删改操作后刷新页面

    这篇文章主要介绍了vue实现在进行增删改操作后刷新页面,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-05
  • Pycharm 跳转回之前所在页面的操作

    这篇文章主要介绍了Pycharm 跳转回之前所在页面的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-05
  • 详解ASP.NET Core 中基于工厂的中间件激活的实现方法

    这篇文章主要介绍了ASP.NET Core 中基于工厂的中间件激活的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • 微信小程序页面间传值的实现方法示例

    这篇文章主要给大家介绍了关于微信小程序页面间传值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-09
  • Bootstrap页面缩小变形的快速解决办法

    bootstrap布局是应用得很广泛的一种网页布局方法,下面通过本文给大家介绍bootstrap页面缩小变形的快速解决办法,需要的朋友参考下吧...2017-02-08
  • asp.net通过消息队列处理高并发请求(以抢小米手机为例)

    这篇文章主要介绍了asp.net通过消息队列处理高并发请求(以抢小米手机为例),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • ASP.NET 2.0中的数据操作:使用两个DropDownList过滤的主/从报表

    在前面的指南中我们研究了如何显示一个简单的主/从报表, 该报表使用DropDownList和GridView控件, DropDownList填充类别,GridView显示选定类别的产品. 这类报表用于显示具有...2016-05-19
  • ASP.NET单选按钮控件RadioButton常用属性和方法介绍

    RadioButton又称单选按钮,其在工具箱中的图标为 ,单选按钮通常成组出现,用于提供两个或多个互斥选项,即在一组单选钮中只能选择一个...2021-09-22