嘗嘗ASP.NET中的小甜餅
2024-07-10 12:55:17
供稿:網(wǎng)友
cookie對于使用過asp的讀者來講并不陌生,但是我們要講的是在asp.net中的cookie。我們知道,cookie存在于用戶計算機瀏覽器中,我們可以使用cookie來存放一些很簡單的數(shù)據(jù)。但是,有一點別說我沒提醒你:記住這不是個好辦法,因為用戶可以在任何時間刪除cookie信息,也可以關(guān)閉cookie功能。好了,開場白就這些。
使用asp.net我們可以很容易的對cookie集合進行操作。它和asp中的cookie一樣,都是附屬于request和response對象的。listing1和2分別給出了如何讀和寫cookie的方法。圖1和2則是相應(yīng)的顯示。
listing 1這個文件的功能是寫入cookie
<%@ language="c#" %>
<html>
<script language="c#" runat="server">
void writeclicked(object sender, eventargs e)
{
//創(chuàng)建一個新cookie,其cookie名來自于namefield.text
httpcookie cookie = new httpcookie(namefield.text);
//設(shè)定cookie的值
cookie.value = valuefield.text;
//設(shè)定cookie生命為1 minute,timespan()是一個專門設(shè)定時間間隔的類,我們定義了其實例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名對應(yīng)的對象,注意目前的得到的cookie是個對象
httpcookie cookie = request.cookies[strcookiename];
//檢驗cookie是否已經(jīng)存在
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寫入用戶的瀏覽器,我們調(diào)用了httpcookie對象,并且建立了一個httpcookie對象的實例cookie,寫入cookie時,我們使用了response.cookies對象的方法add(),最后我們設(shè)定了此cookie的生命期限為一分鐘。
在listing 2中,我們嘗試了讀取cookie的方法。很簡單,就是訪問了request.cookies集合。
cookie只能存放string類型的數(shù)據(jù),如果想要存放更為復(fù)雜的數(shù)據(jù)類型,那么必須先將其轉(zhuǎn)換為string類型。提示一種辦法可以向cookie寫入復(fù)雜的數(shù)據(jù)類型,就是將想存放的復(fù)雜數(shù)據(jù)類型轉(zhuǎn)化為xml串,然后寫入cookie。另外,我們還可以在一個cookie中存儲多個值,在此就不多說了,留給有興趣的讀者去研究吧。菜鳥學(xué)堂: