最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

列舉ASP.NET頁面之間傳遞值的幾種方式

 更新時(shí)間:2019年03月22日 08:19:27   作者:熊金宇  
這篇文章主要介紹了列舉ASP.NET 頁面之間傳遞值的幾種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

1 .列舉ASP.NET 頁面之間傳遞值的幾種方式。

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

為了在頁面之間傳遞變量內(nèi)容,ASP.NET給了我們幾個(gè)選擇。一種選擇是使用QueryString 屬性

一:QueryString. 可以使用查詢字符串請(qǐng)求網(wǎng)頁。ASP.NET中的QueryString訪問此信息。當(dāng)你加載file.html?x = y時(shí),它解析“x”和“y”。 首先,我們看到一個(gè).aspx Web窗體頁面,在用戶訪問Default.aspx時(shí)執(zhí)行。這里的代碼是代碼隱藏部分Default.aspx.cs。

嘗試在 URL 的末尾添加字符串“ ?param = dotnet ”。Response.Write將被觸發(fā)。

基于: .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);
  }
 }
}

結(jié)果, Page打印param查詢的值,該值是字符串值: param is dotnet 。

兩個(gè)參數(shù)。要繼續(xù),我們測試兩個(gè)查詢字符串URL參數(shù)。這是開發(fā)中相當(dāng)普遍的要求??赡鼙仨毻瑫r(shí)使用其中一個(gè)或兩個(gè)。

帶有多個(gè)參數(shù)的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");
  }
 }
}

測試代碼這個(gè)網(wǎng)址: ?param=first&id=true

要進(jìn)行測試,請(qǐng)?jiān)贗nternet瀏覽器(例如Internet Explorer或Firefox)的URL末尾鍵入測試URL。該字符串指定“param”查詢等于“first”。并且“id”參數(shù)等于“true”。

Quote:可以使用鍵或索引訪問的關(guān)聯(lián)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())
  {
   // 獲取第一個(gè)鍵和值
   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還可以使用它們?cè)诓樵冏址械奈恢脕頇z索此值。

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

這種方法的缺點(diǎn)

  1. QueryString 有一個(gè)最大長度,如果你必須發(fā)送很多信息這種方法不起作用。
  2. QueryString 在您的瀏覽器的地址部分中可見,因此您不應(yīng)將其與敏感信息一起使用。
  3. QueryString 不能用于發(fā)送&和空格字符。

用%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 方法更改查詢字符串,以便它們不會(huì)產(chǎn)生問題。

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 使用簡單,不僅能傳遞簡單數(shù)據(jù)類型,還能傳遞對(duì)象。.數(shù)據(jù)量大小是不限制的。在Session變量存儲(chǔ)大量的數(shù)據(jù)會(huì)消耗較多的服務(wù)器資源。容易丟失。在源頁面的代碼中創(chuàng)建你需要傳遞的名稱和值構(gòu)造Session變量: Session["Name"]="Value(Or Object) ";在目的頁面的代碼使用Session變量取出傳遞的值。 Result = Session["Nmae"] 注意:session不用時(shí)可以銷毀它,銷毀的方法是:清除一個(gè): Session.Remove("session名") ;清除所有: Session.Clear();

string city = "Seattle"; 
// 保存到Web窗體頁面類中的會(huì)話狀態(tài)
Session["City"] = city; 
//從Web窗體頁面類中的會(huì)話狀態(tài)讀取。 
city = (string)(Session["City"]); 
//在Web窗體頁面類之外,使用HttpContext.Current。 
HttpContext context = HttpContext.Current; 
context.Session["FirstName"] = firstName; 
firstName = (string)(context.Session["FirstName"]);

Session類類似于鍵類型字符串和值類型對(duì)象的字典。這允許存儲(chǔ)任何類型的變量,并稍后通過名稱引用它。

什么是Cookies?

Cookie是在客戶端的系統(tǒng)或客戶端瀏覽器內(nèi)存上創(chuàng)建的小文件(如果是臨時(shí)的)。我們可以在客戶端系統(tǒng)中存儲(chǔ)小塊信息,并在需要時(shí)使用它。 最有趣的是它與用戶透明地工作 。它可以輕松地在Web應(yīng)用程序的任何位置使用。 Cookies以純文本格式存儲(chǔ)信息 。如果Web應(yīng)用程序使用cookie,則服務(wù)器發(fā)送cookie,客戶端瀏覽器將存儲(chǔ)它。然后,瀏覽器在下次請(qǐng)求頁面時(shí)將cookie返回給服務(wù)器。使用cookie的最常見示例是 存儲(chǔ)用戶信息,用戶首選項(xiàng),密碼記憶選項(xiàng) 等.Cookies有許多優(yōu)點(diǎn)和缺點(diǎn)。

Cookies是如何開始的?

當(dāng)客戶端向服務(wù)器請(qǐng)求時(shí),服務(wù)器將cookie發(fā)送到客戶端。后續(xù)請(qǐng)求可以引用相同的cookie。例如,如果 codeproject.com 將會(huì)話ID存儲(chǔ)為cookie,則當(dāng)客戶端第一次在服務(wù)器上命中時(shí),服務(wù)器會(huì)生成會(huì)話ID并將其作為cookie發(fā)送到客戶端

瀏覽器和Web服務(wù)器負(fù)責(zé)交換cookie信息。對(duì)于不同的站點(diǎn),瀏覽器以不同的方式保留cookie 如果頁面需要來自cookie的信息,當(dāng)該URL被命中時(shí),首先它在本地系統(tǒng)中搜索cookie信息,然后將其移動(dòng)到具有該信息的服務(wù)器。

Cookies的優(yōu)點(diǎn)

以下是在Web應(yīng)用程序中使用cookie的主要優(yōu)點(diǎn):

它的使用和實(shí)現(xiàn)非常簡單。

瀏覽器負(fù)責(zé)發(fā)送數(shù)據(jù)。

對(duì)于包含cookie的多個(gè)站點(diǎn),瀏覽器會(huì)自動(dòng)排列它們。

Cookie的缺點(diǎn)

它以簡單的文本格式存儲(chǔ)數(shù)據(jù),因此根本 不安全 。

Cookie數(shù)據(jù)有一個(gè)大小限制( 4096字節(jié)/ 4KB )。

允許的最大cookie數(shù)量也是有限的。大多數(shù)瀏覽器將cookie的數(shù)量限制為20.如果新的cookie出現(xiàn),舊的cookie將被丟棄。有些瀏覽器最多支持 300 個(gè)。

如何創(chuàng)建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(同一個(gè)cookie中的多個(gè)值)

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

查看代碼,看看我們?nèi)绾蝿?chuàng)建cookie并使用Web響應(yīng)添加它。

已創(chuàng)建的cookie將一直存在,直到瀏覽器關(guān)閉。我們可以堅(jiān)持使用cookie。

如何從Cookies中讀取數(shù)據(jù)

現(xiàn)在是時(shí)候從cookie中檢索數(shù)據(jù)了。在閱讀cookie之前,首先我們需要檢查是否找到了cookie。在閱讀cookie之前檢查cookie始終是一個(gè)好習(xí)慣,因?yàn)闉g覽器可能已禁用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文件夾中清除客戶端機(jī)器上的cookie信息

設(shè)置到cookie對(duì)象的到期時(shí)間

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

它會(huì)在一小時(shí)內(nèi)清除cookie。

三、Application對(duì)象

Application對(duì)象的作用范圍是整個(gè)全局,也就是說對(duì)所有用戶都有效。它在整個(gè)應(yīng)用程序生命周期中都是有效的,類似于使用全局變量一樣,所以可以在不同頁面中對(duì)它進(jìn)行存取。它和Session變量的區(qū)別在于,前者是所有的用戶共用的全局變量,后者是各個(gè)用戶獨(dú)有的全局變量。

舉個(gè)例子:網(wǎng)站訪問數(shù)。多個(gè)請(qǐng)求訪問時(shí)都可以對(duì)它進(jìn)行操作。

優(yōu)點(diǎn):1.使用簡單,消耗較少的服務(wù)器資源。

2.不僅能傳遞簡單數(shù)據(jù),還能傳遞對(duì)象。

3.數(shù)據(jù)量大小是不限制的。

缺點(diǎn):1.作為全局變量容易被誤操作。所以單個(gè)用戶使用的變量一般不能用application。

使用方法:1.在源頁面的代碼中創(chuàng)建你需要傳遞的名稱和值構(gòu)造Application變量:Application["Nmae"]="Value(Or Object)";

2.在目的頁面的代碼使用Application變量取出傳遞的值。Result = Application["Nmae"]

注意:常用lock和unlock方法用來鎖定和解鎖,為了防止并發(fā)修改。

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

四、Server.Transfer

終止當(dāng)前頁面的執(zhí)行并開始執(zhí)行當(dāng)前請(qǐng)求的新頁面。

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • .NET?Core配置TLS?Cipher(套件)的詳細(xì)過程

    .NET?Core配置TLS?Cipher(套件)的詳細(xì)過程

    本文以.NET?5為例,只不過針對(duì).NET?Core?3或3.1通過工具掃描出的協(xié)議套件結(jié)果略有所差異,但不影響我們對(duì)安全套件的配置,我們使用OpenSSL生成自簽名證書,對(duì).NET?Core配置TLS?Cipher相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-12-12
  • 詳解ASP.NET Core 中間件之壓縮、緩存

    詳解ASP.NET Core 中間件之壓縮、緩存

    本篇文章主要介紹了ASP.NET Core 中間件之壓縮、緩存,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • .NET?core項(xiàng)目AsyncLocal在鏈路追蹤中的應(yīng)用

    .NET?core項(xiàng)目AsyncLocal在鏈路追蹤中的應(yīng)用

    這篇文章主要為大家介紹了.NET?core項(xiàng)目zhong?AsyncLocal在鏈路追蹤中的應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • asp.net下定制日期輸出格式的代碼

    asp.net下定制日期輸出格式的代碼

    asp.net下定制日期輸出格式的代碼...
    2007-09-09
  • asp.net實(shí)現(xiàn)三層架構(gòu)的例子

    asp.net實(shí)現(xiàn)三層架構(gòu)的例子

    這篇文章主要介紹了asp.net實(shí)現(xiàn)三層架構(gòu)的例子,十分的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-07-07
  • Asp.net core利用MediatR進(jìn)程內(nèi)發(fā)布/訂閱詳解

    Asp.net core利用MediatR進(jìn)程內(nèi)發(fā)布/訂閱詳解

    這篇文章主要給大家介紹了關(guān)于Asp.net core利用MediatR進(jìn)程內(nèi)發(fā)布/訂閱的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Asp.net core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 詳解如何在ASP.NET Core中使用Redis

    詳解如何在ASP.NET Core中使用Redis

    Redis 是一個(gè)開源的內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),本篇文章主要介紹了如何在ASP.NET Core中使用Redis,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • aspx實(shí)現(xiàn)的 jquery ui 的 flexgrid demo

    aspx實(shí)現(xiàn)的 jquery ui 的 flexgrid demo

    這幾天沒事研究著jquery,真是個(gè)好東西,慢慢的知道了有jquery ui,一開始就被華麗的界面和簡單的操作給吸引了,尤其是里面的flexgrid,對(duì)我而言可以說是非常寶貴的東西
    2009-12-12
  • Asp.Net Core利用文件監(jiān)視進(jìn)行快速測試開發(fā)詳解

    Asp.Net Core利用文件監(jiān)視進(jìn)行快速測試開發(fā)詳解

    這篇文章主要給大家介紹了關(guān)于Asp.Net Core利用文件監(jiān)視進(jìn)行快速測試開發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Queryable.Union 方法實(shí)現(xiàn)json格式的字符串合并的具體實(shí)例

    Queryable.Union 方法實(shí)現(xiàn)json格式的字符串合并的具體實(shí)例

    這篇文章介紹了Queryable.Union 方法實(shí)現(xiàn)json格式的字符串合并的具體實(shí)例,有需要的朋友可以參考一下
    2013-10-10

最新評(píng)論

景洪市| 永济市| 永年县| 全南县| 绵阳市| 平顶山市| 荃湾区| 蓝田县| 江口县| 随州市| 福州市| 竹溪县| 玉田县| 都昌县| 耿马| 纳雍县| 石嘴山市| 双峰县| 平罗县| 离岛区| 安阳市| 潜江市| 镇康县| 尚义县| 慈溪市| 伽师县| 沧源| 孟州市| 冀州市| 泰兴市| 汉源县| 麻栗坡县| 荆州市| 郯城县| 平果县| 海南省| 贵溪市| 乌拉特中旗| 峨眉山市| 盈江县| 呼图壁县|