《ASP.NET 4 从入门到精通》 学习笔记 第一天

时间:2022-05-21 20:03:24

ASP.NET 4 学习笔录

基础知识

1. Web应用程序基础

1.1 HTTP 请求
1.1.1 从浏览器发出的HTTP请求
1.1.2 在不使用浏览器的情况下生成请求
构建一个简单的HTTP请求程序
《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net;

using System.IO;

namespace WebRequestorApp

{

class Program

{

static void Main(string[] args)

{

WebRequest req = WebRequest.Create("http://www.microsoft.com");

WebResponse resp = req.GetResponse();

StreamReader reader = new StreamReader(resp.GetResponseStream());

Console.WriteLine(reader.ReadToEnd());

Console.ReadLine();

}

}

}

 

《ASP.NET 4 从入门到精通》 学习笔记 第一天

1.2 超文本标记语言
《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

</head>

<body>

<h2>Hello there. Whate's your favorite .NET feature?</h2>

<select name="Feature">

<option>Type-Satety</option>

<option>Garbage collection</option>

<option>Multiple syntaxes</option>

<option>Simpler threading</option>

<option>Versioning purgatory</option>

</select>

<br />

<input type="submit" name="Lookup" value="Lookup" />

<br />

</body>

</html>

 

1.3 动态内容
1.3.1 HTMl表单
1.3.4 Internet信息服务
1.4 传统的ASP:ASP.NET前身
《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<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>

<h3>Hello world!!! This is an ASP page.</h3>

<%Response.Write("This content was generated ");%>

<%Response.Write("as part of an execution block");%>

</form>

</body>

</html>

 

1.5 Web开发思想

处理两大问题:

n 在无线连接型协议上通过HTML来管理用户界面(UI);

n 管理应用程序状态。

1.6 ASP.NET

ASP.NET1.0 引入一条明确管线、高效、扩展、服务器控件、简化模型

ASP.NET2.0 极大改进身份验证与授权服务方面

ASP.NET3.5 支持异步Java和XML风格编程

1.7 IIS快速参考

《ASP.NET 4 从入门到精通》 学习笔记 第一天

打开“Internet 信息服务(IIS)管理器”

打开“控制面板”,找到“管理工具”,选择“Internet信息服务管理器”

新建虚拟目录

打开“Internet 信息服务(IIS)管理器”,依次展开“网站”|Default Web Site。在Default Web Site。在Default Web Site 节点上右击,选择“添加虚拟目录”。然后根据向导的提示进行操作

在IIS中浏览某个资源

在所有要浏览的资源上右击,然后选择“浏览”图标按钮

查看特定IIS虚拟目录中支持的文件类型

选择该虚拟目录,在“过年视图”中浏览“处理程序映射”和“模块”页面

2. ASP.NET 应用程序基础

2.1 经典的Hello World程序

构建Hello World Web应用程序

1. 创建将要包含Web应用程序文件的目录。

2. 创建一个放置文件的应用程序/虚拟目录。

3. 制作一个简单的HTML页面。

4. 浏览这个页面。

5. 将这个HTML文件转换为ASP.NET应用程序。

6. 查看浏览器所解析的HTML源代码。

《ASP.NET 4 从入门到精通》 学习笔记 第一天

《ASP.NET 4 从入门到精通》 学习笔记 第一天

2.1.1 可执行代码与HTML的混合
《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

</head>

<body>

<%

Response.Write("Check out the family tree: <br> <br>");

Response.Write(this.GetType().ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.BaseType.BaseType.ToString());

%>

</body>

</html>

 

《ASP.NET 4 从入门到精通》 学习笔记 第一天

2.1.2 服务器端的可执行块

《ASP.NET 4 从入门到精通》 学习笔记 第一天

《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

void ShowLineage()

{

Response.Write("Check out the family tree: <br> <br>");

Response.Write(this.GetType().ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.BaseType.BaseType.ToString());

}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

</head>

<body>

<h1>Hello World!!!</h1>

<%

// This block will execute in the Render_Control method

ShowLineage();

%>

</body>

</html>

 

2.2 ASP.NET编译模型

查看ASP.NET程序集

n 为运行ILDASM,请打开“Visual Studio 命令提示(2010)”,然后输入ILDASM。

n 选择“文件”|“打开”命令。

n 查找 ASP.NET 运行库编译的程序集。进入 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\aspnetstepbystep4\......

《ASP.NET 4 从入门到精通》 学习笔记 第一天

2.3 编码风格
2.3.1 ASP.NET 1.x风格
2.3.2 现代ASP.NET 风格
2.4 ASP.NET HTTP管线
2.4.1 IIS 5.x和IIS 6.x 的管线
2.4.2 IIS 7.x集成的管线
2.4.3 管线内部的组件
2.4.3.1 HttpApplication
2.4.3.2 HttpContext

-- Response 对象的引用(可用于向客户端发送输出)

-- Request 对象的引用(可用于获取有关请求变身的信息)

-- 中心应用程序本身的应用(可用于获取应用程序的状态)

-- 针对每个请求的字典的引用(可用于在请求的生命周期中存储数据)

-- 应用程序范围缓存的引用(可用于存储数据,从而避免与数据库的频繁交互)

2.4.3.3 HttpModule
2.4.3.4 HttpHandler
2.5 Visual Studio与ASP.NET
2.5.1 本地IIS网站
2.5.2 基于文件系统的网站
2.5.3 FTP网站
2.5.4 远程网站
2.5.5 Hello World 与 Visual Studio

创建HelloWorld Web应用程序

《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HelloWorld.aspx.cs" Inherits="HelloWorld" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

</head>

<body>

<form id="form1" runat="server">

<div>

<h2>Hello World!</h2>

<%

ShowLineage();

%>

</div>

</form>

</body>

</html>

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

public partial class HelloWorld : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

public void ShowLineage()

{

Response.Write("Check out the family tree: <br> <br>");

Response.Write(this.GetType().ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.BaseType.ToString());

Response.Write(" which derives from: <br> ");

Response.Write(this.GetType().BaseType.BaseType.BaseType.BaseType.ToString());

}

}

 

《ASP.NET 4 从入门到精通》 学习笔记 第一天

在Visual Studio 2010中创建FTP网站

在主菜单中依次选择“文件”|“新建”|“网站”命令。在“Web位置”组合框中选择“FTP”。该选项适合创建最终通过FTP协议部署的网站

在Visual Studio 2010中创建HTTP网站

在主菜单中依次选择“文件”|“新建”|“网站”命令。在“Web位置”组合框中选择“HTTP”。该选项适合创建在整个开发期间将IIS作为Web服务器的网站

在Visual Studio 2010 中创建基于文件系统的网站

在主菜单中一次选择“文件”|“新建”|“网站”命令。在“Web位置”组合框中选择“文件系统”。该选项会使网站使用Visual Studio 内建的Web服务器。这样可以在计算机未安装IIS的情况下开发网站

3. 页面呈现模型

3.1 将控件呈现为标签

4. 

《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

5. <html xmlns="http://www.w3.org/1999/xhtml">

6. <head>

7. <title>Untitled Page</title>

8. </head>

9. <body>

10. <h2>

11. Page in HTML</h2>

12. <form method="post" action="BuchOfControls.htm" id="Form1">

13. <label>

14. Type in me</label>

15. <input name="textinfo" type="text" id="textinfo" />

16. <br />

17. <select name="selectionitems">

18. <option value="Item 1">Item 1</option>

19. <option value="Item 2">Item 2</option>

20. <option value="Item 3">Item 3</option>

21. <option value="Item 4">Item 4</option>

22. </select>

23. <br />

24. <input type="submit" name="clickme" value="Click Me!" id="clickme" />

25. </form>

26. </body>

27. </html>

28.

29. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

30. <html xmlns="http://www.w3.org/1999/xhtml">

31. <head>

32. <title>Untitled Page</title>

33. </head>

34. <body>

35. <h2>

36. Page in Classic ASP</h2>

37. <form>

38. <label>

39. Type in me</label>

40. <input name="textinfo" type="text" id="textinfo" />

41. <br />

42. <select name="selectionitems">

43. <option value="Item 1">Item 1</option>

44. <option value="Item 2">Item 2</option>

45. <option value="Item 3">Item 3</option>

46. <option value="Item 4">Item 4</option>

47. </select>

48. <br />

49. <input type="submit" name="clickme" value="Click Me!" id="clickme" />

50. <p>

51. <% if(Request("textinfo") !=""){ %>

52. This was in the text box:

53. <%=Request("textinfo") %><br />

54. And this was in thie selection control:<%Request("selectitems") %>

55. <%} %>

56. </p>

57. </form>

58. </body>

59. </html>

60.

 

3.2 将界面元素包装成组件
3.2.1 ASP.NET页面
《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
4 <%@ Page Language=C# trace=true %>

5

6 <script type="text/C#" runat="server">

7 protected void Page_Load(object sender, EventArgs ea)

8 {

9 if(!IsPostBack)

10 {

11 ddl.Items.Add("Item 1");

12 ddl.Items.Add("Item 2");

13 ddl.Items.Add("Item 3");

14 ddl.Items.Add("Item 4");

15 }

16 }

17 </script>

18

19 <h2> Page in ASP.NET </h2>

20

21 <form id="Form1" runat="server" >

22 <asp:Label Text="Type in me" runat="server" />

23 <asp:TextBox id="textinfo" runat="server" />

24 <BR>

25 <asp:DropDownList id="ddl" runat="server" />

26 <BR>

27 <asp:Button id="clickme" Text="Click Me!" runat="server" />

28 </form>

29

30

 

3.1.2 页面的呈现模型

Trace 属性被设为True 时,ASP.NET 会记录请求和响应的整个上下文。

<%Page Language=”C#” Trace=”true”%>

3.1.3 页面的控件树
3.3 使用Visual Studio 添加控件

使用Visual Studio 构建一个页面

《ASP.NET 4 从入门到精通》 学习笔记 第一天

《ASP.NET 4 从入门到精通》 学习笔记 第一天

《ASP.NET 4 从入门到精通》 学习笔记 第一天

在ASPX的“源”视图和“设计”视图之间切换

切换到“设计”或“源”选项卡,他们通常显示在编辑器窗口的左下角。也可以使用“拆分”选项卡来同时显示“源”和“设计”视图

在页面中添加服务器端控件

打开“工具箱”。如果该窗口没有被显示,可以在主菜单中一次选择“视图”|“工具箱”选项。(也可以使用组合键Ctrl+W,X。)

在“工具箱”中单击该控件,并将其拖放到页面上

修改页面上控件的属性

确保页面设计器处于“设计”模式。选中要编辑属性的控件。

在“属性”窗口中修改目标的属性

启用跟踪

在“源”代码编辑模式下,为Page指令添加Trace=“true”属性。

或者

在“属性”窗口顶部选中DOCUMENT 元素,将Trace 属性设置为True

修改服务器端控件的大小

选中该控件,用鼠标拖动控件边框上的手柄,知道将控件调整到合适大小

为控件的默认事件添加处理程序

双击要添加事件处理程序的控件。此时会显示代码编辑器,可以为此事件的处理程序添加代码

修改页面的布局方式

在主菜单上依次单击“格式”|“新建样式”命令。在“类别”中选择“布局”,在右侧定义样式(除布局外,还可以定义字体样式和页边空白等属性)。该样式可以应用到整个页面,业可以应用到单个元素。

4 自定义控件

4.1 Control类

Page类主要的属性、方法和事件

成员

说明

Application

当前请求的HttpApplicationState对象的引用

Cache

应用程序缓存的引用,缓存即内存中应用程序范围的状态字典(通常用于优化)

Controls

Page维护的控件集合

CreateChildControls

页面创建其控件树时调用的虚方法

Init

指示页面已被初始化的事件

IsPostBack

用于判断当前请求是新的请求或回发的属性

Load

指示页面已加载的事件

Request

引用的是一个有状态对象,代表传入的请求

Response

引用的是一个有状态对象,代表传出的响应

Session

引用的是一个有状态对象,其中包括针对当前请求的信息

Unload

指示页面已经被卸载的事件

4.2 Visual Studio 与自定义控件

创建自定义控件

《ASP.NET 4 从入门到精通》 学习笔记 第一天

在主菜单中依次选择“生成”|“生成解决方案”,生成项目。

通过编译后,Visual Studio 便自动将其添加到“工具箱”中,供主项目使用。

《ASP.NET 4 从入门到精通》 学习笔记 第一天

4.3 回文验证器

构建一个回文验证器

4.4 HtmlTextWriter与控件
《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
5 //HtmlTextWriter

6 if (this.CheckForPalindrome())

7 {

8 output.Write("This is a palindrome: <br>");

9 output.RenderBeginTag(HtmlTextWriterTag.Font);

10 output.AddStyleAttribute(HtmlTextWriterStyle.Color, "blue");

11 output.RenderBeginTag(HtmlTextWriterTag.B);

12 output.Write(Text);

13 output.RenderEndTag(); // bold

14 output.RenderEndTag(); // font

15 }

16 else

17 {

18 output.Write("This is NOT a palindrome: <br>");

19 output.RenderBeginTag(HtmlTextWriterTag.Font);

20 output.AddStyleAttribute(HtmlTextWriterStyle.Color, "red");

21 output.RenderBeginTag(HtmlTextWriterTag.B);

22 output.Write(Text);

23 output.RenderEndTag(); // bold

24 output.RenderEndTag(); // font

25 }

26 output.Write("<br>");

27

 

HtmlTextWriter类和相应的枚举掩盖了HTML3.2和HTML4.0之间的差异。根据不同版本生成对应HTML。

4.6 控件与视图状态

使用ViewState

《ASP.NET 4 从入门到精通》 学习笔记 第一天《ASP.NET 4 从入门到精通》 学习笔记 第一天View Code
ViewState["Text"] = value;

string text = value;

this.alPalindromes = (ArrayList)this.ViewState["palindromes"];

if (this.alPalindromes == null)

{

this.alPalindromes = new ArrayList();

}

if (this.CheckForPalindrome())

{

if (PalindromeFound != null)

{

PalindromeFound(this, EventArgs.Empty);

}

alPalindromes.Add(text);

}

ViewState.Add("palindromes",alPalindromes);

 

新建呈现过程可控的自定义控件

从System.Web.UI.Control派生一个类。重写RenderControl方法。也可以使用Visual Studio中的一种名为“ASP.NET服务控件”的项目类型

将自定义控件添加到“工具箱”

打开“工具箱”(如果其尚未被显示,可以在主菜单中一次选择“视图”|“工具箱”)。在“工具箱”的任意位置单击右击键,然后在快捷菜单中单击“选择项”。从列表中选择该控件,或通过浏览包含该控件的程序集来添加

修改页面上控件属性

确保页面的编辑器处于“设计”视图。选择目标控件,并在“属性”窗口中编辑所要修改的属性

管理页面上所有控件所引发的事件

确保页面的编辑器处于“设计”视图。选择目标控件,在事件窗口中选择所要处理的事件(单击“属性”窗口上端的闪电图标)。可以通过双击它来使Visual studio 插入相应的处理程序,也可以直接输入处理程序的名称

存储特殊的视图状态信息

确保所要存储的数据类型是可序列化的,并使用空间的ViewState属性(一种键/值集合)。在获取之前存储的信息时,应确保使用系统的索引值/键

编写与浏览器版本无光的呈现代码

使用HtmlTextWriter的标签呈现方法来插入标签,而不要硬编码。ASP.NET会根据浏览器的标头信息来决定将哪种HtmlTextWriter传入RenderControl