问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ASP.NET页面间传递有哪几种方式?

发布网友 发布时间:2022-05-19 09:09

我来回答

2个回答

懂视网 时间:2022-05-19 13:30

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);

热心网友 时间:2022-05-19 10:38

1、表单传递(Form表单中,分成post和get)。
2、URL方式重写传递(一个地址http://……?参数1=数值1&参数2=数值2……&参数n=数值n)
3、Session
4、Cookie
5、利用PreviousPage.FindControl(“控件名”)的方式(放在if(page.PreviousPage!=null
&&
PreviousPage.IsCrossPagePostBack){}中)。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
你喜欢外柔内刚的女孩还是外刚内柔的女孩? 男人喜欢外柔内刚还是外刚内柔型的女生 ...怎样涂好颜色啊,用彩笔还是彩铅啊...谢谢啦 ...也转动了,但是里面却没有动静,也没有风不过半分钟就关了,不是... 空调开机没反应,用遥控器点开关没反应,确定不是遥控器问题,空调重新插... 请问一下 上海电信的融合宽带一个月多少钱? 本人男 脸太圆想要瘦脸 不用药 女生初涉期货行业从事什么岗位比较好 为什么较少女生选择做期货交易 我现在就读大学,现在学校里新建一个期货专业,我在考虑转专业_百度知 ... 小米手机出现android是什么意思?vivo手机不开机,充电显示android 网贷邮政寄来法院传票 网贷逾期发信息说让我注意接收发院传票和诉状副本是真的吗? 小额贷款重庆法院传票真假 网贷借款一千逾期一年了,发来了法院传票,我想问问这个传票是真的吗 欠网贷钱没有还然后当地派出所给我打电话让我去拿法院传票是真的吗? 网贷没还收到了法院传票是真的吗 网贷之后短信收到法院传票是真的吗 网贷法院传票真的假的 英雄联盟 瑞文 光速qa键盘 ,按键怎么设置 lol锐雯怎么改建实现光速qa 猪肝和香蕉、栗子相克吗? 和猪肝相克的食物有哪些? 车物流费用怎么算的 小孩小汽车怎么打包发快递不坏 物流发汽车怎么收费? 小鸟云的云服务器,有windows 2019的系统吗? hp n54l gen7是否可以安装windows server 2019最低硬件要求 swplant电脑配置要求 为什么高中语文课要学文言文 大庄家期货软件吸筹是什么? 济南冬天适合去哪个景点好玩 济南冬天去哪个景点好 济南冬天哪好玩? 汪姓男孩取名 请问高达到底有多少集啊? ASP.NET页面之间的传递值有哪些方式? 丝网花 芭比娃娃怎么做啊 谁能告诉我吗 而且有视频吗 我怎么搜不到 谁能帮帮我?谢谢了 芭比娃娃的房子怎样制作 怎样给芭比娃娃做一个化妆台用视频教 怎样自己制作芭比娃娃的房子 我把cad里面的用户自定义里面的键盘快粘贴捷键给删除了,怎么恢复啊 湘源 快捷命令删了 怎么恢复(连CAD的基本命令都没了) 如何恢复桌面上的cad2008的快捷方式命令 2009CAD的命令行删除了怎么复原 求北海自驾到重庆路线 自驾从北海至重庆的路上哪里方便转车去上海 北海回重庆多少公里 从北海回重庆长寿请给规划一下路线怎么走好? 从重庆自驾游到北海 全程大概多少公里? 油费以及过路费大概需要多少?全程路线怎么走? 然后北海到桂林的