首页 > 网站 > 建站经验 > 正文

ASP.NET- 状态的传递和保存

2019-11-02 15:44:44
字体:
来源:转载
供稿:网友

  1,HTTP协议是无状态的。服务器不会记住上次给浏览器的处理结果,如果需要上次处理结果(上次状态)就需要浏览器把处理结果值(上次状态)再次给服务器。

  2,URL传值:通过URL参数或者通过Form表单进行页面件的传值 (不能做到很自由的存取和读取,而且不安全)

  3,Cookie :①Cookie可以用来进行更加自由的数据的存取和读取。

  ②Cookie是和站点相关的,自己域名写的只有自己的域名才可以读取。

  ③客户端向服务器发送请求的时候 处理发送Form表单信息以外还会把和站点有关的所有的Cookie发送给服务器,是强制的。

  ④服务器返回的数据处理HTML数据以外,还会返回修改的Cookie,浏览器拿到修改后的Cookie更新到本地的Cookie

  ⑤服务器端使用Cookie案例,记住用户名功能:

  A,设置页面值: Response.SetCookie(new HttpCookie("UserName",username))

  B,读取页面值: username=Request.Cookies["UserName"].Value

  ⑥浏览器关闭以后Cookie的声明周期到期,也就是Cookie的默认生命周期是浏览器的生命周期。可以通过设置Expires属性设置Cookie的过期时间:Cookie.Expires=DateTime.Now.AddDays(-1)

  ⑦Cookie在客户端是以键值对存在的

  4,Cookie缺点:①客户端额可以手动清楚Cookie 所以Cookie里面存放的信息是可有可无的信息

  ②浏览器对 Cookie 的大小有限制,因此只有不超过 4096 字节才能保证被接受

  ③机密信息不能放到Cookie里面

  ④Cookie不能跨浏览器

  5,Cookie的写和读: A,新建CookieTest.html页面并添加 两个按钮分别用于Cookie的读和写

  <!DOCTYPE html>

  <html xm lns="http://www.w3.org/1999/xhtml">

  <head>

  <me ta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <title></title>

  </head>

  <body>

  <form>

  <in put type="submit" name="Read" value="读取Cookie" /> 

  <in put type="submit" name="Write" value="写入Cookie" />

  <br />

  读取出来的Cookie: $Model.CookieValue

  </form>

  </body>

  </html>

  B,建立对应的CookieTest.ashx页面 实现Cookie的新建写入本地以及读取Cookie的值

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  namespace HttpNoStatus

  {

  /// <summary>

  /// HttpCookie 的摘要说明

  /// </summary>

  public class CookieTest : IHttpHandler

  {

  public void ProcessRequest(HttpContext context)

  {

  context.Response.ContentType = "text/html";

  //if else 判断是点击的那个按钮

  if (!string.IsNullOrEmpty(context.Request["Read"]))

  {

  if (context.Request.Cookies["Age"] != null)

  {

  HttpCookie cookie = context.Request.Cookies["Age"];

  string strValue = cookie.Value;

  var data = new { CookieValue = strValue };

  //加载模板页面并传递 Cookie Value的值

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表