WebFrom 【内置对象】— —跳转页面,页面传值

 

 

  Response    --  响应请求对象

传值

       Response.Redirect("url");     --  地址?变量= 值 

                           Response      -- Response响应对象, 将 http 响应数据发送的客户端

                           Redirect       -- 重定向,将客户端重定向到新的 URL,

 

       Response.Write("string"); 

                                    -- 将此字符串输出到页面的最顶部

 

  Request      -- 获取请求对象

接收

    string s = Request["key"];    -- key 为传过来的变量 

                           Request       -- 获取请求对象

                            key             -- 抓取从地址栏传过来的值

 

Restonse 与 Request 组合成 QueryString 传值方式。也称为 url传值,地址传值

  1、不占用服务器内存

  2、保密性差,传递值的长度有限

  3、只能传 string 类型

 

       Response.Redirect("Default2.aspx?a="+textBox1.Text);

     

        string  s = Request[a];

       label1.Text = s ; 

                                -- textBox1.Text 文本框的值

                                -- 必须在地址后加  ?变量=  

 

 

 

  Session  

传值

        string  s =  textBox1.Text;

          session [ " a " ]= s ;

           Response.Redirect(  " 地址 " );

取值

         Label.Text = session[ " a " ].Tostring( );

清除

          sessin[ "a" ]=null ; 

特点

    Session里面能存储 Object 类型 

   存贮在服务端,占用服务器内存,很好用,速度很快但不要滥用,容易溢出

   不需要地址传值,同一服务器上可以随意访问

   浏览器一旦关闭,那么会断开此条Session的连接

              -- (直接打开页2,页2 无数据,页1打开页2,页2有数据,关闭页2再直接打开页2 ,页2无数据)

    生命周期:20分钟,每一次新的请求都会刷新这个时间

    

 例      

        //
        Student s = new Student();
        s.Name = "张三";
        s.Sex = "";
        Session["a"] = s;
        Response.Redirect("Default2.aspx");


        //
        if (Session["a"] != null)
        {
            Student ss = Session["a"] as Student;
            Label1.Text = ss.Name + ss.Sex;
        
        }
View Code

 

 

  Cookie  

       与Session一模一样
      不一样的地方:Cookies是存储在客户端的 ,有可能被非法访问

                          传 string 类型,传汉字会因编码方式不同出现乱码

传值:

          string  s =  textBox1.Text;

          Response.Cookies["aa"].Value = s;

          Response.Redirect(  " 地址 " );            -- 只能是 string 类型

取值:
          string ss = Request.Cookies["aa"].Value;

                                                                  -- 只能用 Request 取值

清除(将日期变为过期)

        Response.Cookies["user"].Expires = DateTime.Now.AddDays(-1); 

1、判断、赋值

 void Button1_Click(object sender, EventArgs e)
    {
        //判断用户名密码是否正确
        if (TextBox1.Text == "zhangsan" && TextBox2.Text == "1234")
        {
            Response.Cookies["user"].Value = TextBox1.Text;

            if (CheckBox1.Checked)  //如果选保存密码
            {
                Response.Cookies["user"].Expires = DateTime.Now.AddDays(3);
            }                           //改会话 cookies 为持久 cookies 

            Response.Redirect("Default2.aspx");
        }
        else
        {
            Response.Write("用户名密码错误!");
        }


    }
View Code

2、判断取值

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //判断是否有传值过来  ——--—— 此时不加 Value
        if (Request.Cookies["user"] != null)
        {
            Label1.Text = Request.Cookies["user"].Value + "欢迎你!";
        }
        else
        {
            Response.Redirect("Default.aspx");
        }
        Button1.Click += Button1_Click;
    }

    //退出按钮
    void Button1_Click(object sender, EventArgs e)
    {                                    //改变会话时间 关闭 cookies 会话
        Response.Cookies["user"].Expires = DateTime.Now.AddDays(-10);
        Response.Redirect("Default.aspx");
    }
}
View Code

 

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

                                             -- 判断是否有传值过来,此时不加 Value

Response.Cookies["user"].Expires = DateTime.Now.AddDays(3);

                                            --  改会话 cookies 为持久 cookies(加三天时间)

 

 Application 

  全局公共变量组

     使用方法:与Session一样,传任意类型,

                  实际运用过程中 常被用作缓存  

  存放位置:服务器

  特点:所有访问用户都是访问同一个变量,但只要服务器不停机,变量一直存在于服务器的内存中

              不要使用循环大量的创建Application对象,可能会造成服务器崩溃。

  生命周期:永久,只要服务器不停机

     string s = TextBox1.Text;

     Application["aaa"] = s;

 

     Label2.Text = Application["aaa"].ToString( );

  

 ViewState 

  

   用于记录页面的一些状态,就像人的病例,比如当执行提交后,网页可以保留一些已经输入的文本框而非清空

  webform中微软已经给我们做好了这个对象,自带此功能。

     在查看源代码会发现一个自动加载的 aspNetHidden 标记,里面的隐藏域的东西就是 viewstate

       .aspx 是由 .ashx  .html  组成, .ashx 写后台 .html 展示

 

!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form action="aaaa.ashx" method="post">     <!-- post 可理解我服务端传值-->
                        <!-- method="get"-->       <!-- get 可理解为客户端传值 -->
        <input type="text" name="txt1" />
        <input type="submit" value="提交" />

    </form>
</body>
</html>
html

 

.
<%@ WebHandler Language="C#" Class="aaaa" %>

using System;
using System.Web;

public class aaaa : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) {  //所有的东西都要写在这个方法里
        string s = context.Request["txt1"];

        context.Response.Write(s);
        context.Response.Redirect("HtmlPage.html");
        
        
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}
aspx

 

posted @ 2017-05-21 20:33  唐宏昌  阅读(318)  评论(0)    收藏  举报