欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
在A(yíng)SP.NET中實(shí)現頁(yè)面間的參數傳遞

    一.使用QueryString

    使用QueryString在頁(yè)面間傳遞值是一種非常常見(jiàn)的方法,我們在A(yíng)SP中就常常用到。

    (1)優(yōu)點(diǎn)和缺點(diǎn)
    優(yōu)點(diǎn):
    1.使用簡(jiǎn)單,對于安全性要求不高時(shí)傳遞數字或是文本值非常有效。
    缺點(diǎn):
    1.缺乏安全性,由于它的值暴露在瀏覽器的URL地址中的。
    2.不能傳遞對象。

    (2)使用方法
    1.在源頁(yè)面的代碼中用需要傳遞的名稱(chēng)和值構造URL地址。
    2.在源頁(yè)面的代碼用Response.Redirect(URL);重定向到上面的URL地址中。
    3.在目的頁(yè)面的代碼使用Request.QueryString["name"];取出URL地址中傳遞的值。

    (3)應用舉例

    1.源頁(yè)面*.aspx的代碼:

  private void Button1_Click(object sender, System.EventArgs e)
  {
   string urlAddress;
   string Name1;
   string Name2;
   string Name3;
   string Name1Value = "HelloName1";   
   int Name2Value = 1234567;
   string Name3Value = "你好名稱(chēng)3";

   urlAddress = "destinationWebForm.aspx?Name1=" + Name1Value + "&" + "Name2=" + Name2Value.ToString() + "&" + "Name3=" + Name3Value;
   Response.Redirect(urlAddress);   
  }

    2.目的頁(yè)面destinationWebForm.aspx的代碼:
  private void Page_Load(object sender, System.EventArgs e)
  {
   string myName1Value;
   int    myName2Value;
   string myName3Value;

   myName1Value = Request.QueryString["Name1"];
   myName2Value = Convert.ToInt32(Request.QueryString["Name2"]);
   myName3Value = Request.QueryString["Name3"];
  }

(4)可能出現的問(wèn)題
1在處理Resonse.QueryString函數漢字參數傳遞時(shí),發(fā)生不能完整傳遞參數的具體值的錯誤,解決有兩個(gè)方法。

方法一:需要重新設置Web.config中的encoding和全球化設置。

1、首行:<?xml version="1.0" encoding="utf-8" ?>
更改為:
<?xml version="1.0" encoding="GB2312" ?>
2、<!--  全球化
          此節設置應用程序的全球化設置。
    -->
    <globalization
            requestEncoding="utf-8"
            responseEncoding="utf-8"
   />
更改為:
<!--  全球化
          此節設置應用程序的全球化設置。
    -->
    <globalization
            requestEncoding="GB2312"
            responseEncoding="GB2312"
   />
    [1]

    方法二:使用Server.UrlEncode和Server.UrlDecode對漢字或者特殊字符進(jìn)行編碼和解碼。

    二、使用Application變量

    使用Application變量是在頁(yè)面間傳遞值的第二種方式。
    Application變量在整個(gè)應用程序生命周期中都是有效的,類(lèi)似于使用全局變量一樣,所以可以在不同頁(yè)面中對它進(jìn)行存取。它和Session變量的區別在于,前者是所有的用戶(hù)共用的全局變量,后者是各個(gè)用戶(hù)獨有的全局變量。
    舉個(gè)例子來(lái)解釋?zhuān)?br>    網(wǎng)站訪(fǎng)問(wèn)的計數器變量一般采用Application變量,多個(gè)請求訪(fǎng)問(wèn)時(shí)共享這一個(gè)變量,均可對它進(jìn)行操作,該變量可以被整個(gè)應用程序的各個(gè)頁(yè)面直接使用。
   用戶(hù)登陸的賬號名一般采用Session變量,多個(gè)請求訪(fǎng)問(wèn)時(shí)有各自的Session變量,只能對自己的該Session變量進(jìn)行操作,整個(gè)應用程序的各個(gè)頁(yè)面直接使用這個(gè)變量來(lái)獲得用戶(hù)的基本信息。

    (1)優(yōu)點(diǎn)和缺點(diǎn)

    優(yōu)點(diǎn):
    1.使用簡(jiǎn)單,消耗較少的服務(wù)器資源。
    2.不僅能傳遞簡(jiǎn)單數據,還能傳遞對象。
    3.數據量大小是不限制的。

    缺點(diǎn):
    1.作為全局變量容易被誤操作。

    (2)使用方法

    1.在源頁(yè)面的代碼中創(chuàng )建你需要傳遞的名稱(chēng)和值構造Application變量:Application["Nmae"]="Value(Or Object)";
    2.在目的頁(yè)面的代碼使用Application變量取出傳遞的值。Result = Application["Nmae"]

    (3)應用舉例

    1.源頁(yè)面 *.aspx的代碼:

private void Button1_Click(object sender, System.EventArgs e)
  {
   string Name1Value = "HelloName1";   
   int Name2Value = 1234567;

   Application["Name1"] = Name1Value;
   Application["Name2"] = Name2Value;     
  }

    2.目的頁(yè)面 *.aspx的代碼:

private void Page_Load(object sender, System.EventArgs e)
  {
   string myName1Value;
   int    myName2Value;

   myName1Value = Application["Name1"].ToString();
   myName2Value = (int)Application["Name2"];
  }


    三、使用Session變量

    使用Application變量是在頁(yè)面間傳遞值的第三種方式。Session變量和Application變量非常類(lèi)似,它們的區別也已經(jīng)在上面關(guān)于A(yíng)pplication變量時(shí)提到了。

    (1)優(yōu)點(diǎn)和缺點(diǎn)
    優(yōu)點(diǎn):
    1.使用簡(jiǎn)單,不僅能傳遞簡(jiǎn)單數據類(lèi)型,還能傳遞對象。
    2.數據量大小是不限制的。

    缺點(diǎn):
    1.在Session變量存儲大量的數據會(huì )消耗較多的服務(wù)器資源。


    (2)使用方法

    1.在源頁(yè)面的代碼中創(chuàng )建你需要傳遞的名稱(chēng)和值構造Session變量:Session["Nmae"]="Value(Or  Object)";
    2.在目的頁(yè)面的代碼使用Session變量取出傳遞的值。Result = Session["Nmae"]

    (3)應用舉例

     與Application變量類(lèi)似,只是將Application替換為Session即可。

    四、使用Cookie對象


   使用Cookie對象是在頁(yè)面間傳遞值的第四種方式。Cookie用于在用戶(hù)瀏覽器上存儲小塊的信息,保存用戶(hù)的相關(guān)信息,比如用戶(hù)訪(fǎng)問(wèn)某網(wǎng)站時(shí)用戶(hù)的ID,用戶(hù)的偏好等,用戶(hù)下次訪(fǎng)問(wèn)就可以通過(guò)檢索獲得以前的信息。所以Cookie也可以在頁(yè)面間傳遞值。Cookie通過(guò)HTTP頭在瀏覽器和服務(wù)器之間來(lái)回傳遞的。Cookie只能包含字符串的值,如果想在Cookie存儲整數值,那么需要先轉換為字符串的形式。
  可以通過(guò)遍歷Request對象的Cookie集合可以獲得所有的瀏覽器所有的Cookie。方法如下:
foreach (string strKey in Request.Cookies)
 {
     lblCookies.Text += strKey + "=" + Request.Cookies[ strKey ].Value;
 }


    (1)優(yōu)點(diǎn)和缺點(diǎn)

    優(yōu)點(diǎn):
    1.使用簡(jiǎn)單,是保持用戶(hù)狀態(tài)的一種非常常用的方法。比如在購物網(wǎng)站中用戶(hù)跨多個(gè)頁(yè)面表單時(shí)可以用它來(lái)保持用戶(hù)狀態(tài)。

    缺點(diǎn):
    1.常常被人認為用來(lái)收集用戶(hù)隱私而遭到批評。


    (2)使用方法

    1.在源頁(yè)面的代碼中創(chuàng )建你需要傳遞的名稱(chēng)和值構造Cookie對象:
    HttpCookie objCookie = new HttpCookie("myCookie","Hello,Cookie!");
    Response.Cookies.Add(cookie); 
    2.在目的頁(yè)面的代碼使用Cookie對象取出傳遞的值:Result = Request.Cookies[ "myCookie" ].Value;

    (3)應用舉例

    1.源頁(yè)面 *.aspx的代碼:

private void Button1_Click(object sender, System.EventArgs e)
  {
   HttpCookie objCookie = new HttpCookie("myCookie","Hello,Cookie!");
   Response.Cookies.Add(objCookie);      
  }

    2.目的頁(yè)面 *.aspx的代碼:

private void Page_Load(object sender, System.EventArgs e)
  {
   string myName1Value;
   myName1Value = Request.Cookies[ "myCookie" ].Value;
  }

    五、使用Server.Transfer


    使用Server.Transfer變量是在頁(yè)面間傳遞值的第五種方式。上面的四個(gè)方法我們在A(yíng)SP中常常使用,但是這個(gè)方法是在A(yíng)SP.NET中新出現的。Server.Transfer是從當前的ASPX頁(yè)面轉到新的ASPX頁(yè)面,服務(wù)器端執行新頁(yè)并輸出,在新頁(yè)面中通過(guò)Context.Handler來(lái)獲得前一個(gè)頁(yè)面傳遞的各種數據類(lèi)型的值、表單數據、QueryString.由于重定向完全在服務(wù)器端完成,所以客戶(hù)端瀏覽器中的URL地址是不會(huì )改變的。
    調用Server.Transfer時(shí),當前的ASPX頁(yè)面終止執行,執行流程轉入另一個(gè)ASPX頁(yè)面,但新的ASPX頁(yè)面仍使用前一ASPX頁(yè)面創(chuàng )建的應答流。[2]

    在這里比較一下Server.Transfer和在“一”中使用的Response.Redirect的區別。
    (1)Server.Transfer在服務(wù)器端完成,所以客戶(hù)端瀏覽器中的URL地址是不會(huì )改變的;Response.Redirect是客戶(hù)端完成,向服務(wù)器端提出新的頁(yè)面處理請求,所以客戶(hù)端瀏覽器中的URL地址是會(huì )改變的。
    (2)Server.Transfer在服務(wù)器端完成,不需要客戶(hù)端提出請求,減少了客戶(hù)端對服務(wù)器端提出請求。[2]
    (3)Server.Transfer只能夠轉跳到本地虛擬目錄指定的頁(yè)面,也就是工程項目中的頁(yè)面,而Response.Redirect則十分靈活,可以跳轉到任何URL地址。
    (4)Server.Transfer可以將前一個(gè)頁(yè)面的各種類(lèi)型的值傳到新的頁(yè)面;Response.Redirect則只能借助URL中帶參數或是結合上面四種辦法把各種類(lèi)型的值傳到新的頁(yè)面。
   
    繼續我們的Server.Transfer用法。

    (1)優(yōu)點(diǎn)和缺點(diǎn)

    優(yōu)點(diǎn):
    1.直接在服務(wù)器端重定向,使用簡(jiǎn)單方便,減少了客戶(hù)端對服務(wù)器端提出請求。
    2.可以傳遞各種數據類(lèi)型的值和控件的值。

    缺點(diǎn):
    1.客戶(hù)端瀏覽器中的URL地址是不改變,會(huì )導致在新的頁(yè)面可能出現一些意想不到的問(wèn)題。比如如果源頁(yè)面和目的頁(yè)面不在同一個(gè)虛擬目錄或其子目錄下,那么使用相對路徑的圖片、超鏈接都會(huì )導致錯誤的指向。[3]


    (2)使用方法

    1.在源頁(yè)面的代碼中,使用Page類(lèi)的Server.Transfer跳到另一個(gè)頁(yè)面傳遞頁(yè)面數據:
    Server.Transfer("destinationWebForm.aspx","false")。

    2.在目的頁(yè)面中,使用Context.Handler來(lái)接收數據:
    FormerPage formerPage = (FormerPage)Context.Handler; 
    然后用formerPage的屬性和方法來(lái)獲取前一個(gè)頁(yè)面的值,或者直接用
    Context.Items["myParameter "]
    來(lái)獲取前一個(gè)頁(yè)面的值。

    需要注意的是獲取這些值必須在新的頁(yè)面首次加載時(shí),才能正確獲取上一頁(yè)面的各種數據類(lèi)型或是控件的值。在以后的postback時(shí),就無(wú)法獲取上一頁(yè)面的各種數據類(lèi)型或是控件的值了,因為此時(shí)得到的當前頁(yè)面的實(shí)例. 所以需要在新頁(yè)面(destinationWebForm.aspx)的Page_Load()事件中使用if(!IsPostBack)把獲取前一個(gè)頁(yè)面的值的代碼包含起來(lái),才能獲得前一個(gè)頁(yè)面傳遞的各種數據類(lèi)型的值、表單數據、QueryString。

    (3)應用舉例

    1.源頁(yè)面 FormerPage.aspx的代碼:

public string HelloContextAttribute
  {
   get
   {
    return "Use Attribute: Hello,Context";
   }
  }
  public string HelloContextMethod()
  {
   return "Call Method: Hello,Context!";
  }

  public string TextBoxValue
  {
   get
   {
    return TextBox1.Text;
   }
  }


  private void Button1_Click(object sender, System.EventArgs e)
  {
   string Name1Value = "Hello, Name1!";
   TextBox1.Text ="Hello,TextBox1!";

   ArrayList myList = new ArrayList(3);//創(chuàng )建動(dòng)態(tài)數組
   myList.Add("Hello,Array1! ");//向動(dòng)態(tài)數組中添加新的值
   myList.Add("Hello,Array2!");
   myList.Add("Hello,Array3!");
   //Context可保存任意數據類(lèi)型,Context字典特定于某個(gè)Http請求。
   //對于不同客戶(hù)端,值是不一樣的。
   Context.Items["destinationList"] = myList;//在Context.Items中保存動(dòng)態(tài)數組

   Context.Items.Add("newContext","Hello,NewContext");//在Context.Items中保存一組名稱(chēng)-值的數據

   //Server.Transfer第二參數如果為true,表示本頁(yè)面的Form和QuerryString的值在新頁(yè)面繼續有效。
   //否則在新頁(yè)面無(wú)法獲得TextBox1的值。
   Server.Transfer("destinationWebForm.aspx?Name1="+ Name1Value,true);
  }


    2.目的頁(yè)面 destinationWebForm.aspx的代碼:
   
  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!IsPostBack)
   {
    try
    {
     string helloContextAttribute;
     string helloContextMethod;
     string textBoxValue;
     string contextItemsValue;
     string queryString;

     ArrayList listResult;

     FormerPage formerPage = (FormerPage)Context.Handler;
     helloContextAttribute = formerPage.HelloContextAttribute;//通過(guò)FormerPage中定義的屬性來(lái)獲取值
     helloContextMethod = formerPage.HelloContextMethod();//通過(guò)FormerPage中定義的方法來(lái)獲取值
     textBoxValue = formerPage.TextBoxValue;//通過(guò)FormerPage中返回文本控件的值
     //下面的方法多用于用戶(hù)在控件中輸入值后才能獲取,但是在程序中給直接TextBox1.Text賦值,那么下面的方法獲得
     //的空值,在這種情況下需要使用上面的獲取方法
     //textBoxValue = Request.Form["TextBox1"];
          
     contextItemsValue = Context.Items["newContext"].ToString();//通過(guò)FormerPage中Context的Items獲取值
     listResult = (ArrayList)Context.Items["destinationList"];//通過(guò)FormerPage中Context的Items獲取對象,強制轉換類(lèi)型:
     queryString = Request.QueryString["Name1"];//通過(guò)FormerPage的URL中的QueryString獲取值 
    }
    catch
    {
     Response.Write("Error!");
    }            
   }
  }

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP.NET頁(yè)面傳值匯總(Session/Server.Transfer/Query String/Cookie/Application)
ASP.NET學(xué)習筆記 ---系統對象與狀態(tài)管理大全
Silverlight和ASP.NET相互傳參的兩種常用方式(QueryString,Cookie)
Asp.net頁(yè)面之間的傳值 - Study
ASP.NET頁(yè)面間數據傳遞的方法講解|.net(C# vb asp)
ASP.NET頁(yè)面間傳值的幾種方式
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久