尝尝ASP.NET中的小甜饼
2024-07-10 12:55:17
供稿:网友
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中存储多个值,在此就不多说了,留给有兴趣的读者去研究吧。菜鸟学堂: