资源预览内容
第1页 / 共29页
第2页 / 共29页
第3页 / 共29页
第4页 / 共29页
第5页 / 共29页
第6页 / 共29页
第7页 / 共29页
第8页 / 共29页
第9页 / 共29页
第10页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第3章 ASP.NET中的对象,3.1 Page类,Page类与扩展名为.aspx的文件相关联,这些文件在运行时被编译为Page对象,并被缓存在服务器内存中。如果要使用代码隐藏技术创建Web窗体页,需要从该类派生。 在单文件页中,标记、服务器端元素以及事件处理代码全都位于同一个.aspx文件中。在对该页进行编译时,如果存在使用Page指令的Inherits属性定义的自定义基类,编译器将生成和编译一个从该基类派生的新类,否则编译器将生成和编译一个从Page基类派生的新类。 在代码隐藏模型中,页的标记和服务器端元素(包括控件声明)位于.aspx文件中,而用户定义的页代码则位于单独的代码文件中。该代码文件包含一个分部类,即具有关键字partial的类声明,以表示该代码文件只包含构成该页的完整类的全体代码的一部分。,3.1 Page类,代码隐藏页的继承模型如下: (1)代码隐藏文件包含一个继承自基页类的分部类。基页类可以是Page类,也可以是从Page派生的其他类。 (2).aspx 文件在 Page指令中包含一个指向代码隐藏分部类的Inherits属性。 (3)在对该页进行编译时,ASP.NET基于.aspx文件生成一个分部类;此类是代码隐藏类文件的分部类。生成的分部类文件包含页控件的声明。使用此分部类,用户可以将代码隐藏文件用作完整类的一部分,而无需显式声明控件。 (4)ASP.NET生成另外一个类,该类从在步骤3中生成的类继承而来。它包含生成该页所需的代码。该类和代码隐藏类将编译成程序集,运行该程序集可以将输出呈现到浏览器。,3.1 Page类,Page类的常见属性和事件如下表:,3.1 Page类,应用范例:演示加载网页时各种事件的发生顺序。运行结果如下图:,核心代码: protected void Page_PreInit(object sender, EventArgs e) ShowMessage(“触发Page对象的PreInit事件。“); protected void Page_Init(object sender, EventArgs e) ShowMessage(“触发Page对象的Init事件。“); ,3.1 Page类,单击“发送”按钮,网页如下图:,核心代码: protected void Button1_Click(object sender, EventArgs e) ShowMessage(“触发按钮的Click事件。“); ,3.2 ASP.NET核心对象,Response对象提供对当前页的输出流的访问。Response对象的Redirect 方法可以将客户端重定向到新的URL,其语法定义如下所示。 public void Redirect(string url); public void Redirect( string url, bool endResponse); 其中,url为要重新定向的目标网址,endResponse 指示当前页的执行是否应终止。,3.2.1 Response对象,3.2 ASP.NET核心对象,Write方法用于将信息写入HTTP响应输出流,输出到客户端显示,其语法定义如下所示: public void Write(char, int, int); public void Write(string); public void Write(object); public void Write(char); 从该方法的参数可以看出,通过Write方法可以把字符数组,字符串,对象,或者一个字符输出显示。,3.2.1 Response对象,3.2 ASP.NET核心对象,WriteFile方法用于把指定的文件直接写入HTTP响应输出流 ,其语法定义如下所示: public void WriteFile(string filename); public void WriteFile(string filename, long offset, long size); public void WriteFile(IntPtr fileHandle, long offset, long size); public void WriteFile(string filename, bool readIntoMemory); 其中参数filename为要写入HTTP输出流的文件名;参数offset为文件中将开始进行写入的字节位置;参数size为要写入输出流的字节数(从从开始位置计算)。参数fileHandle是要写入HTTP输出流的文件的文件句柄;参数readIntoMemory指示是否将把文件写入内存块。,3.2.1 Response对象,3.2 ASP.NET核心对象,3.2.1 Response对象,应用范例:介绍如何通过该方法实现页面的重新定向,运行结果如下图所示:,核心代码: protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) if (myDropDownList.SelectedIndex = 0) return; Response.Redirect(myDropDownList.SelectedItem.Text); ,3.2 ASP.NET核心对象,3.2.1 Response对象,用户可以单击ComboBox控件,显示供选择的网址,如下图:,3.2 ASP.NET核心对象,访问Page类的Request属性时,Request对象返回HttpRequest的一个对象。然后开发者就可以使用该对象中的方法。该属性提供对当前页请求的访问,其中包括请求标题、Cookie、客户端证书、查询字符串等。HttpRequest类的常见属性有: ApplicationPath:说明被请求的页面位于Web应用程序的哪一个文件夹中。 Path:与ApplicationPath相同,即返回页面完整的Web路径地址,而且还包括页面的文件名称。 PhysicalApplicationPath:返回页面的完整路径,但它位于物理磁盘上,而不是一个Web地址。 Cookies:查看访问者在以前访问本站点时使用的cookies。,3.2.2 Request对象,3.2 ASP.NET核心对象,3.2.2 Request对象,应用范例:在网页中显示应用程序的根路径、虚拟目录和浏览器配置 的语言设置等基本信息。运行结果如下图:,核心代码: protected void Page_Load(object sender, EventArgs e) if(!IsPostBack) Label1.Text = Request. ApplicationPath; Label2.Text = Request. Path; Label3.Text = Request.UserLanguages0; ,Server对象提供了对服务器信息的封装,例如封装了服务器的名称。Server对象实际上操作System.Web命名空间中的HttpServerUtility类 。Server对象提供许多访问的方法和属性帮助程序有序的执行。Server对象常用属性有: MachineName:获取服务器的计算机名称。 ScriptTimeout:获取和设置请求超时(以秒计)。,3.2 ASP.NET核心对象,3.2.3 Server对象,Server对象常用方法有: GetLastError方法:获得前一个异常,当发生错误时可以通过该方法获得错误信息。 ClearError方法:清除前一个异常。 Transfer方法:终止当前页的执行,并为当前请求开始执行新页。 MapPath方法:返回与Web服务器上的指定虚拟路径相对应的物理文件路径。 HtmlEncode方法:对要在浏览器中显示的字符串进行编码。,3.2 ASP.NET核心对象,3.2.3 Server对象,3.3 状态处理,Session对象实际上操作System.Web命名空间中的HttpSessionState类 。Session对象可以为每个用户的会话存储信息。Session对象中的信息只能被用户自己使用,而不能被网站的其他用户访问,因此可以在不同的页面间共享数据,但是不能在用户间共享数据。 当每个用户首次与服务器建立连接时,服务器就会为其建立了一个Session(会话),同时服务器会自动为用户分配一个SessionID,用以标识这个用户的唯一身份。 Session对象具有两个事件:Session_OnStart事件和Session_OnEnd事件。Session_OnStart事件在创建一个Session时触发,Session_OnEnd事件在用户Session结束时被调用。 对于每个用户的每次访问Session对象是唯一的,此外,Session对象的有效性是受时间限制的。,3.3.1 Session对象,对于每个用户的每次访问Session对象是唯一的,这包括两个含义: 对于某个用户的某次访问,Session对象在访问期间唯一,可以通过Session对象在页面间共享信息。只要Session没有超时,或者Abandon方法没有被调用,Session中的信息就不会丢失。Session对象不能在用户间共享信息,而Application对象可以在不同的用户间共享信息。 对于用户的每次访问其Session都不同,两次访问之间也不能共享数据,而Application对象只要没有被重新启动,可以在多次访问间共享数据。,3.3 状态处理,3.3.1 Session对象,3.3 状态处理,3.3.1 Session对象,应用范例:创建两个网页,在一个页面保存Session信息,另外一个页面读取保存的信息。运行程序,输入某个值,单击“设置值”按钮,程序的运行界面如下:,核心代码: protected void Button2_Click(object sender, EventArgs e) Response.Redirect(“3_6_2.aspx protected void Button3_Click(object sender, EventArgs e) Session“CurrentValue“ = TextBox1.Text; Label1.Text = Session.SessionID.ToString(); ,3.3 状态处理,3.3.1 Session对象,在页面中输入Session的有效时间1,然后单击“设置超时时间”按钮,如下图,核心代码: try Session.Timeout = Convert.ToInt32(TextBox2.Text); Label2.Text = Session.Timeout.ToString(); catch (Exception ee) Label2.Text = “无效的输入“; ,3.3 状态处理,3.3.1 Session对象,单击“跳转”按钮,显示如图所示的页面,核心代码: if (Session“CurrentValue“ = null) Response.Write(“Session“CurrentValue“不存在“); else string str = Session“CurrentValue“.ToString(); Response.Write(“Session的值为:“ + str); Response.Write(“Session ID为:“ + Session.SessionID.ToString(); Response.Write(“Session的有效时间为:“ + Session.Timeout.ToStri
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号