【知识要点】
(1)了解不同页面之间的传值
(2)Cookies的应用
【问题提出】
到目前为止,我们所学习都是单页面赋值或运算,如果我们打算在不同的页面传值该如何做呢?
【在线指导】
在不同页进行传值,ASP.NET为我们提供了很多种方法,Cookies也是其中一种,而且非常重要的一种方法。如果你打算了解更多:ASP.NET页面间传递数值的方式有哪些?
Cookie 为 Web 应用程序保存用户相关信息提供了一种有用的方法。例如,当用户访问站点时,可以利用 Cookie 保存用户首选项或其他信息,这样,当用户下次再访问站点时,程序就可以检索以前保存的信息。
从技术上讲,Cookie是小段保存在客户端的数据。
关于Cookie的知识还需要了解以下几点。
·Cookie只是一段字符串,并不能执行。
·大多数浏览器规定Cookie大小不超过4K,每个站点能保存的Cookie不超过20个,所有站点保存的Cookie总和不超过300个。
·除了Cookie外,几乎没有其他的方法在客户端的机器上写入数据。
在使用Cookie时,必须意识到其固有的安全弱点。Cookie毕竟是存放于客户端的。因此,不要在Cookie中保存保密信息,如用户名、密码、信用卡号等。在Cookie中不要保存不应该由用户掌握的内容,也不要保存可能被其他窃取Cookie的人控制的内容。
我们分别建立两个页面:Cookies-A.aspx和Cookies-B.aspx。
Cookies-A.aspx.cs代码:
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie hcUserName = new HttpCookie("UserName");
hcUserName.Value = "MrJiang";
hcUserName.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(hcUserName);
}
-------------------------------------------------------------------------------------------
Cookies-B.aspx.cs代码:
protected void Page_Load(object sender, EventArgs e)
{
HttpCookie hcUserName = Request.Cookies["UserName"];
if (hcUserName != null)
{
Response.Write(string.Format("用户名:{0}<br/>",hcUserName.Value);
}
}
1、设计界面
(1)打开Hello项目,单击“启动页>最近使用的项目>Hello”。
(2)在“解决方案资源管理器”中添加“Cookies-A.aspx”、“Cookies-B.aspx”页面。
2、添加代码
(1)双击Cookies-A.aspx页面空白处。
我们在Page_Load()中间输入:
Cookies["UserName"] = "MrJiang";
(2)双击Cookies-B.aspx页面空白处。
我们在Page_Load()中间输入:
Response.Write(Cookies["UserName"].ToString());
讲解:
Cookies常常用在用户登录之后保存部分信息,例如用户名等,这个我们在后面章节讲“用户登录”时再来体会Cookies的应用场景。
(3)选择“Cookies-A.aspx”,单击右键菜单选择“从浏览器中查看……”。
(4)选择“Cookies-B.aspx”,单击右键菜单选择“从浏览器中查看……”。
Cookie虽然是一个简单实用的对象,但是我们也要注意Cookie的工作原理、大小限制以及安全性等,大致可以归纳为以下几点。
·存储的物理位置。客户端的Cookies文件夹内。
·存储的类型限制。字符串。
·状态使用的范围。当前请求上下文的上下文都能访问到Cookie,Cookie对每个用户来说都是独立的。
·存储的大小限制。每个Cookie不超过4K数据。每个网站不超过20个Cookie。所有网站的Cookie总和不超过300个。
·生命周期。每个Cookie都有自己的过期时间,超过了过期时间后失效。
·安全与性能。存储在客户端,安全性差。对于敏感数据建议加密后存储。
·优点缺点与注意事项。可以很方便地关联网站和用户,长久保存用户设置。