Web编程基础(2)


在ASP.NET 2.0中, Button控件有个新属性PostbackUrl, 定义了应从web服务器上请求的页面.
在.NET 2.0中, Page类有一个新属性PreviousPage, 返回一个page对象, 这个对象的控件可以使用FindControl()方法来访问, 返回一个Control对象.
服务器控件:......
验证控件:.....(记得设置Control To Validate 属性).

状态管理:
使用客户端的状态, 其缺点是在于增加了数据在网络之间的传送. 使用服务器端状态的缺点在于, 服务器必须给其客户端分配资源.
客户端的状态管理:
ViewState
: 是一个隐藏字段, 它会同页面的内容一起发送给浏览器. 当把页面发送给客户端时, ViewState包含与窗体中控件相同的值. 给服务器回送时, ViewState也会同控件的新值一起发送给服务器. 这样它就可以验证值是否改变, 并调用事件处理程序.
Web服务器控件自动使用ViewState来使事件工作.  
使用ViewState的缺点是, 数据总要从服务器传送给客户端, 再从客户端传送给服务器, 增加了网络流量. 为了减少网络流量, 可以关闭ViewState.
在Page指令中, 把EnableViewState属性设置为False, 就可以关闭页面中所有控件的ViewState.
设置一个控件的EnableViewState属性, 也可以配置该控件的ViewState.
还可以把定制的数据存储在ViewState中.
ViewState只能保存在一个页面中. 如果状态应保存在多个不同的页面中, 就应使用Cookie在客户端保存状态.
Cookie:cookie在HTTP的头中定义. 使用HttpResponse类可以把Cookie发送给客户端.
Response是Page类的一个属性, 它返回一个HttpResponse类型的对象.
把Cookie发送给客户端:
Code
如果只需要返回一个cookie的值, 就可以使用Value属性. 如果要发送多个cookie的值,最好把值添加到一个Cookie中,而不是使用多个cookie.
从客户端读取Cookie:
        HttpCookie cookie=Request.Cookies["mycookie"];
        
string myval=cookie.Values["mystate"];
要在ASP.NET页面中读取cookie, 可以访问HttpRequest对象中的cookie集合.
服务器端的状态管理:
Session:
会话状态与浏览器会话相关. 客户在服务器上第一次打开ASP.NET页面时, 会话就开始了. 当客户在20分钟之内没有访问服务器时, 会话结束.
可以在Global Application类中定义自己的代码, 在会话开始或结束时运行.
创建 Global Application 类: WebSite|Add New Item|Global Application Class.  文件中定义了一些事件处理例程.
会话状态可以存储在HttpSessionState对象中.
与当前HTTP环境相关的会话状态对象可以使用Page类的Session属性来访问.
在Session_Start()事件处理程序中, 初始化会话变量:
    void Session_Start(object sender, EventArgs e) 
    
{
        
// 在新会话启动时运行的代码
        Session["mydate"]=0;
    }
通过Session属性读取会话状态:
Code
Application: 如果数据应在多个客户端共享, 就可以使用应用程序状态. 应用程序状态的使用方式与会话状态非常类似.
对于应用程序状态, 应使用 HttpApplicationState类, 通过Page类的Application属性可以访问它.
例如: 在启动Web应用程序时, 初始化应用程序变量usercount:
    void Application_Start(object sender, EventArgs e) 
    
{
        
// 在应用程序启动时运行的代码
        Application["usercount"]=0;
    }
读取应用程序状态中的数据:
        Label1.Text = Application["usercount"].ToString();
Cache:高速缓存类似于应用程序状态, 因为它在所有的客户端上共享.
高速缓存和应用程序状态的区别是: 高速缓存要灵活的多, 定义状态何时失效有许多方式.
我们不是给每个请求读取文件或数据库, 而是把数据存储在高速缓存中.
对于高速缓存, 需要使用System.Web.Caching命名空间和Cache类.
利用Cache类的Add()方法可以把任意对象赋予高速缓存.
Cache.Add("mycache", myobj, null, DateTime.MaxValue, TimeSpan.FromMinutes(10), CacheItemPriority.Normal, null);
第一个参数: 高速缓存项的名称
第二个参数: 应高速缓存的对象
第三个参数: 依赖关系
第四个参数: 高速缓存项失效的绝对时间
第五个参数: 高速缓存项失效的相对时间
第六个参数: 高速缓存的优先级
第七个参数: 定义一个方法, 在删除高速缓存项时调用该方法.

先大致了解一下, 留点印象, 在用到的时候, 再学习.
原文地址:https://www.cnblogs.com/niuniu1985/p/1562099.html