从今天开始学习.NET,选择C#作为实验工具。学习资料均从网上DOWNLOAD,经过挑选后,逐一学习。
1)了解.NET架构;
2)配置.NET运行环境;
3)C#语法;
4)常用的.NET对象;
5)Server端控件;
6)数据库访问技术及ADO.NET;
7).NET的application对象;
8)文件的操作;
9)XML及Webservice;
10).NET错误处理及调试;
11).NET的安全性。
名词:
解释与编译
ASP.NET对文件进行语法分析,并编译为程序集,而ASP却是将服务器端代码交由解释器来处理(VBSCRIPT&JSCRIPT)。ASP对网页中的文本进行线性解释,提取不是服务器端的内容作为回应,而服务器端内容先有解释器执行返回客户端,从而决定了ASP的执行效率比预编译低。而对于ASP.NET,页面代码始终被编译为.NET的类,并保存于程序中,所以只要第一访问了网页,以后生成该网页时只需执行编译代码即可。
编译模型的优点:
1)效率和性能高,以上已经提及;
2)将网页编译为类,便于调试;
3)开发语言不受限制。
System.Web.UI.Page&类
在默认情况下,每个.aspx网页从page基类派生而来。
由于现在网页在一个类中进行定义,故而可以指定字段(field)和方法(method)的保护等级,使用字段初始化值(field initializer),以及所有其他需要添加到一个类中的东两。这一点很重要,因为这两个地方所放置的代码,将被放入生成的类定义之中,而这两个地方可是截然不同的。位于服务器端脚本块(<script runat=server></script))之内的代码,可以直接放入类定义之中;而位于服务器端脚本标记(<%%>)之内的代码,放入类的一个函数主体之中;在生成网页时,就会调用该函数。
System.Web.UI.Page类中的重要成员
====================
public class Page:TemplateControl,IHttpHandler
{
//State Management
public HttpAplicationState Application {get;}
public virtual HttpSessionState Session {get;}
public Cache Cache {get;}
//Instrinsics
public HttpRequest Request {get;}
public HttpResponse Response {get;}
//Client information
public ClientTarget ClientTarget {get;set;}
public IPincipal User {get;}
//Core
public UserControl LoadControl )string virtualPath);
public virtual ControlCollection Controls {get;}
public override string ID {get;set;}
public bool IsPostBack{get;}
Protected void
RenderControl (HtmlTextWriter writer)
//...
}
代码隐藏
作用:将编程逻辑与静态布局分离开来。
说明:代码隐藏是一种创建中间基类(介于page基类和机器根据.aspx文件生成的类之间)的技术。中间基类直接从page类派生过来,而根据.aspx文件生成的类直接派生与中间基类,而不是直接派生于page类。使用之中技术,可以想代码隐藏类中添加字段、方法和函数,并可以容那些根据.aspx文件创建的类继承这些特性,从而可以从.aspx文件中移出大量的代码。这种技术以来于为自动生成的类指定另一种基类的能力,可以由page指令中的inherist属性设定。
示例:
<!--Codebinhind.aspx-->
<%@ page Language="c#"
Inherits="EssentialAspDotNet.Architecture.SamplePage"%>
<html><body>
<h2>ASPX CLASS</h2>
<ul>
<%WriteArray%>
</ul>
</body></html>
//SampleCodeBinhand.cs
using System;
using System.web;
using System.Web.UI;
using System.Collections;
namespace EssentialAspDotNet.Architecture
{
public class SaplePage:Page
{
private ArrayList_values=new ArrayList();
public SamplePage()
{
_values.Add("v1");
_values.Add("v2");
_values.Add("v3");
_values.Add("v4");
}
protected void WriteArray()
{
for (int i=0;i<_values.Count;i++)
Response.Output.Write("<li>{0}</li>",_values[i]);
}
}
}
任何被page指令的src属性引用的文件都被编译为一个单独的程序集,并在编译网页时,把它加入引用的程序集代码。使用src的好处:只要通过替换文件就可以更新代码隐藏程序集文件,并在下一个请求时从新编译引用文件,而不必更新/bin目录下的物理程序集。
示例:
<!--CodeBinhind.aspx-->
<%@ Page Language="C#" src="SampleCodeBehind.cs"
Inherits="EssentialAspDotNet.Architecture.SamplePage"%>
<!--....-->
事件处理
page基类定义了4个事件,由control基类继承而来,Init,Load,PreRender,Unload.
示例:
Public Class Page:TemplateControl,IHttpHandler
{
//事件
public event EventHandler Init;
public event EventHandler load;
public event EventHandler PreRender;
public event EventHandler Unload;
//虚函数
protected virtual void OnInit(EventArgs e);
Protected virtual void OnLoad(EventArgs e);
Protected virtual void OnPreRender(EventArgs e);
Protected virtual void OnUnload(EventArgs e);
}
Init事件发生在任何服务器端状态还原完成之前;Load事件发生在服务器端状态还
原完成之后,但在激发服务器端事件之前;PreRender事件发生在激发所有的服务器端
事件之后,们在生成任何东西之前(即在返回HTML之前);unload事件发生在网页生
成完成之后。