5-7 Cookie的应用实例

两种方式对元素设置CSS属性:

方法一:控件调用Style属性和Add方法;

方法二:通过CssClass类的方式来设置元素的样式(该方式为常用方式),其中

str_className是一个字符串,该字符串是类的名称;


例程:

(一)设置例程

两个下拉列表:


颜色列表:

其中red、green、blue等是CSS中设置颜色的固定名称;


文字列表:

其中12px、13px等是CSS中设置字体大小的固定名称;


Button按钮:


Button按钮中的代码:

(二)读取例程

color和font-size这两个名称必须完全按照CSS风格进行描写;

该代码也可写在PageLoad事件中;



在同一页面中为字体设置颜色和宽度的例程:

页面:点击Button,将设置好的颜色和宽度信息保存到cookie中



下面代码为点击Button控件,将设置好的参数写入cookie中:

protected void Button1_Click(object sender, EventArgs e)
    {
        string _color, _fs;
        _color = ddl_color.SelectedValue;
        _fs = ddl_fontsize.SelectedValue;


        HttpCookie ck = new HttpCookie("testCSS");
        ck.Values.Add("color", _color);
        ck.Values.Add("fsize", _fs);
        ck.Expires = DateTime.MaxValue;
        Response.Cookies.Add(ck);

    }


如果在我们打开页面时,我们的label就可以获取cookie中的参数值,并根据值进行样式设置,则我们在PageLoad事件中获取cookie并对label进行设置:

每次打开页面,都可以获取cookie的值:

protected void Page_Load(object sender, EventArgs e)
    {
        HttpCookie ck = Request.Cookies["testCSS"];
        
        string _color = ck.Values["color"];
        string _fs = ck.Values["fsize"];


        lab_css.Style.Add("color", _color);
        lab_css.Style.Add("font-size", _fs);

    }


此时运行页面会发生报错,因为第一次进入页面中,先执行PageLoad事件,而Cookies["testCSS"]并不存在,改进如下:

添加一个判断条件:

 protected void Page_Load(object sender, EventArgs e)
    {
        HttpCookie ck = Request.Cookies["testCSS"];


        if (ck != null)
        {
            string _color = ck.Values["color"];
            string _fs = ck.Values["fsize"];


            lab_css.Style.Add("color", _color);
            lab_css.Style.Add("font-size", _fs);
        }
    }

至此,运行页面,仍存在问题,在下拉列表中选中相应的设置参数,第一次点击Button,label无变化,第二次点击Button,label的设置发生改变,原因:

个人理解:第一次点击Button,回传页面中先执行PageLoad事件,此时在Button的事件代码中所做的更改并没有发送到cookie中,因此在PageLoad中所执行的仍然是原来的参数设置,当执行完PageLoad事件后,最后执行Button事件,此时参数的更改被传入cookie中,因此第一次页面刷新后,label的设置并为发生改变;而再次点击Button控件,先执行PageLoad事件,此时新的参数更改值在PageLoad事件中被接收,因此服务器在编译完页面后返回给客户端的页面是发生改变之后的;


代码的修改:

在Button中将修改后的参数值先传入cookie中,在将设置添加到label中;

 protected void Button1_Click(object sender, EventArgs e)
    {
        string _color, _fs;
        _color = ddl_color.SelectedValue;
        _fs = ddl_fontsize.SelectedValue;


        HttpCookie ck = new HttpCookie("testCSS");
        ck.Values.Add("color", _color);
        ck.Values.Add("fsize", _fs);
        ck.Expires = DateTime.MaxValue;
        Response.Cookies.Add(ck);


        lab_css.Style.Add("color", _color);
        lab_css.Style.Add("font-size", _fs);
    }








猜你喜欢

转载自blog.csdn.net/weixin_38887666/article/details/80253133