嘗嘗ASP.NET中的小甜餅
最後更新:2017-02-28
來源:互聯網
上載者:User
asp.net Cookie對於使用過ASP的讀者來講並不陌生,但是我們要講的是在ASP.NET中的Cookie。我們知道,Cookie存在於使用者電腦瀏覽器中,我們可以使用Cookie來存放一些很簡單的資料。但是,有一點別說我沒提醒你:記住這不是個好辦法,因為使用者可以在任何時間刪除Cookie資訊,也可以關閉Cookie功能。好了,開場白就這些。
使用ASP.NET我們可以很容易的對Cookie集合進行操作。它和ASP中的Cookie一樣,都是附屬於Request和Response對象的。Listing1和2分別給出了如何讀和寫Cookie的方法。圖1和2則是相應的顯示。
Listing 1這個檔案的功能是寫入cookie
<%@ language="C#" %>
<HTML>
<script language="C#" runat="server">
void WriteClicked(Object Sender, EventArgs e)
{
//建立一個新Cookie,其cookie名來自於NameField.Text
HttpCookie cookie = new HttpCookie(NameField.Text);
//設定Cookie的值
cookie.Value = ValueField.Text;
//設定cookie生命為1 minute,TimeSpan()是一個專門設定時間間隔的類,我們定義了其執行個體tsMinute
DateTime dtNow = DateTime.Now;
TimeSpan tsMinute = new TimeSpan(0, 0, 1, 0);
cookie.Expires = dtNow + tsMinute;
//添加Cookie
Response.Cookies.Add(cookie);
Response.Write("Cookie written. <br><hr>");
}
</script>
<body>
<h3>
Use the button below to write cookies to your browser
</h3>
The cookies will expire in one minute.
<form runat="server" ID="Form1">
Cookie Name
<asp:textbox id="NameField" runat="server" />
<br>
Cookie Value
<asp:textbox id="ValueField" runat="server" />
<br>
<asp:button text="WriteCookie" runat="server" ID="Button1" />
<br>
</form>
<a href="readcookies.aspx">Read the cookies</a>
</body>
</HTML>
圖1
Listing 2 這個檔案是為了讀取剛才寫入的cookie值
<%@ language="C#" %>
<script runat="server">
void ReadClicked(Object Sender, EventArgs e)
{
//取得想要的Cookie名
String strCookieName = NameField.Text;
//取得此Cookie名對應的對象,注意目前的得到的cookie是個對象
HttpCookie cookie = Request.Cookies[strCookieName];
//檢驗Cookie是否已經存在
if (null == cookie) {
Response.Write("Cookie not found. <br><hr>");
}
else {
//顯示Cookie的值
String strCookieValue = cookie.Value.ToString();
Response.Write("The " + strCookieName + " cookie contains: <b>"
+ strCookieValue + "</b><br><hr>");
}
}
</script>
<html>
<body>
Use the button below to read a cookie
<br>
<form runat="server" ID="Form1">
Cookie Name
<asp:textbox id="NameField" runat="server" />
<asp:button text="ReadCookie" runat="server" ID="Button1" />
</form>
<a href="writecookies.aspx">Write Cookies</a>
</body>
</html>
圖2
為了更好的瞭解cookie的讀寫,程式碼分析如下。
在Listing 1中,為了將cookie寫入使用者的瀏覽器,我們調用了HttpCookie對象,並且建立了一個HttpCookie對象的執行個體cookie,寫入cookie時,我們使用了Response.Cookies對象的方法Add(),最後我們設定了此cookie的生命期限為一分鐘。
在Listing 2中,我們嘗試了讀取Cookie的方法。很簡單,就是訪問了Request.Cookies集合。
Cookie只能存放string類型的資料,如果想要存放更為複雜的資料類型,那麼必須先將其轉換為string類型。提示一種辦法可以向Cookie寫入複雜的資料類型,就是將想存放的複雜資料類型轉化為XML串,然後寫入Cookie。另外,我們還可以在一個cookie中儲存多個值,在此就不多說了,留給有興趣的讀者去研究吧。