注:因为这个暑假做了一个ASP.NET的项目(WebForms模式),暑假期间太忙没有来得及整理,现在统一梳理下知识(有些我认为可以跟HTML共通的就没记)

推荐几个学习ASP.NET的网站:

W3School
菜鸟教程

书的话。。因为当时项目太紧张。直接动手实战,有不会的直接在上面两个网站查询的。

当时我入门看的书有:

ASP.NET 1.1入门经典-Visual C#.NET 2003编程篇
ASP.NET 3.5 从入门到精通(C#2008版)<—-强推

—–那么,开始ASP.NET学习之旅吧~—–

ASP.NET

ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本(在服务器上运行的语言)创建网页和网站的开发框架

ASP.NET 支持三种不同的开发模式:

  1. Web Pages(Web 页面)

  2. MVC(Model View Controller 模型-视图-控制器)

  3. Web Forms(Web 窗体)

ASP.NET简介

ASP.NET 是新一代的 ASP。它无法兼容经典 ASP,但 ASP.NET 可以引用 ASP。
ASP.NET 页面需要编译,因此比经典 ASP 更快。
ASP.NET 拥有更好的语言支持,大量用户控件,基于 XML 的组件,以及对用户认证的整合。
ASP.NET 页面的扩展名是 .aspx,通常由 VB (Visual Basic) 或 C# (C sharp) 编写。
ASP.NET 中的用户控件可以通过不同的语言进行编写,包括 C++ 和 Java。

ASP.NET 文件

ASP.NET 文件类似 HTML 文件
ASP.NET 文件可以包含 HTML、XML 以及脚本
ASP.NET 文件中的脚本在服务器上执行
ASP.NET 文件的文件后缀是 “.aspx”

ASP.NET文件扩展名

  • ASP 文件的文件扩展名是 .asp
  • ASP.NET 文件的文件扩展名是 .aspx
  • ASP.NET 文件使用 C# 语法的文件扩展名是 .cshtml
  • ASP.NET 文件使用 Razor VB 语法的文件扩展名是 .vbhtml

ASP.NET 如何工作

  • 当浏览器请求 HTML 文件时,服务器会返回该文件
  • 当浏览器请求 ASP.NET 文件时,IIS 会把该请求传递给服务器上的 ASP.NET 引擎
  • ASP.NET 引擎会逐行地读取该文件,并执行文件中的脚本
  • 最后,ASP.NET 文件会以纯 HTML 的形式返回浏览器

根本上讲,ASP.NET 页面与 HTML 完全相同
HTML 页面的扩展名是 .htm 或 .html。假如浏览器从服务器请求某张 HTML 页面,服务器不进行任何修改,就会把该页面发往浏览器。

ASP.NET 页面的扩展名是 .aspx。如果浏览器请求某张 ASP.NET 页面,那么在把结果发回浏览器之前服务器首先会处理页面中的可执行代码

ASP.NET中的<form>标记

ASP.NET有一组窗体控件,它们的使用与HTML窗体控件相同,两者的主要区别是服务器控件是在请求时在服务器上动态形成的,然后再发送出去。

ASP.NET版本只需要几个字符的编码,如下所示:

<form ID="MyForm" runant="server">
...ASP.NET form...
</form>

这个<form>标记只使用了一个属性,即runant=”server”。该属性告知Web服务器应该处理窗体本身,而不是只将它传送到浏览器。所有ASP.NET窗体都用POST方法传送。

<form>标记允许在服务器上处理窗体控件(例如复选框和下拉列表)。ASP.NET对这些控件进行了自定义。

使用ASP.NET窗体控件有几个优点:

  • .NET会自动创建和维护状态,允许用户了解请求窗体的人是否就是请求另一个页面的人
  • ASP.NET提供了一些非常复杂的控件,包括日历控件和栅格控件,来显示数据
  • 控件的内容可以从数据库或商务逻辑中生成
  • 用户输入到控件中的信息可以进行有效性检查,避免输入错误

WebForm简介

传统的 ASP.NET 事件驱动开发模型
添加了服务器控件服务器事件以及服务器代码的网页。

WebForm控件

WebForm中的控件,其实就是服务器控件。带有runat=”server” 属性,必须在服务器进行处理(如果不进行处理,则会报错)

服务器控件是可被服务器理解的标签。

有三种类型的服务器控件:

  • HTML 服务器控件 - 传统的 HTML 标签
  • Web 服务器控件 - 新的 ASP.NET 标签
  • Validation 服务器控件 - 用于输入验证

ASP.NET - HTML 服务器控件

HTML 服务器控件是服务器可理解的 HTML 标签

ASP.NET 中的 HTML 元素是作为文本来进行处理的。要想使这些元素可编程,就需要向这些 HTML 元素添加 runat=”server” 属性。该属性指示,此元素是一个服务器控件。同时要添加 id 属性来标识该服务器控件。该 id 引用可用于操作运行时的服务器控件。

注释:所有 HTML 服务器控件必须位于带有 runat=”server” 属性的 标签内。runat=”server” 属性指示该表单应在服务器进行处理。它同时指示其包括在内的控件可被服务器脚本访问。

以下给出最常用的ASP.NET服务器控件,并与以前使用的HTML窗体标记符进行比较:

ASP.NET 服务器控件 对应的HTML窗体标记符 作用
<asp:label> <Span>,<Div>,简单文本 显示文本
<asp:listbox> <Select> 为用户提供一个选项列表,让用户从中选择
<asp:dropdowmlist> <Select> 以紧凑的方式为用户提供一个选项列表,让用户从中选择
<asp:textbox> <input Type="Text"> 用户输入的可选择内容
<asp:radiobutton>和<asp:radiobuttonlist> <input Type="Radio"> 允许用户从一个选项列表中做出选择
<asp:checkbox>和<asp:checkboxlist> <input Type="Checkbox"> 允许用户打开或关闭一个功能
<asp:button> <input Type="submit"> 把用户的输入发送到服务器

ASP.NET - Web 服务器控件

Web 服务器控件是服务器可理解的特殊 ASP.NET 标签

类似 HTML 服务器控件,Web 服务器控件也在服务器上创建,它们同样需要 runat=”server” 属性以使其生效。不过,Web 服务器控件没有必要映射任何已存在的 HTML 元素,它们代表更复杂的元素。

创建 Web 服务器控件的语法是:

在下面的例子中,我们在 .aspx 文件中的声明了一个 Button 服务器控件。然后我们为 Click 事件创建了一个事件处理程序,它可修改按钮上的文本:

<script runat="server">
Sub submit(Source As Object, e As EventArgs)
button1.Text="You clicked me!"
End Sub
</script><html>
<body><form runat="server">
<asp:Button id="button1" Text="Click me!" runat="server" OnClick="submit"/>
</form></body>
</html>

ASP.NET - Validation 服务器控件

Validation 服务器控件用于验证用户输入。如果用户输入没有通过验证,将向用户显示一条错误消息。

每种 validation 控件执行一种特定的验证类型(比如验证某个具体的值或者某个范围的值)。

默认地,当点击Button, ImageButton或LinkButton 时,就会执行页面验证。您可通过把 CausesValidation 属性设置为 false,来阻止某个按钮控件被点击时进行验证。

创建 Validation 服务器控件的语法是:

在下面的例子中,我们在 .aspx 文件中声明了一个 TextBox 控件,一个 Button 控件,以及一个 RangeValidator 控件。如果验证失败,文本 “The value must be from 1 to 100!” 将显示在 RangeValidator 控件中:

<html>
<body>
<form runat="server"><p>Enter a number from 1 to 100:
<asp:TextBox id="tbox1" runat="server" />
<br /><br />
<asp:Button Text="Submit" runat="server" />
</p><p>
<asp:RangeValidator
ControlToValidate="tbox1"
MinimumValue="1"
MaximumValue="100"
Type="Integer"
Text="The value must be from 1 to 100!"
runat="server" />
</p></form>
</body>
</html>

Page类

每一个Web页面实际上都是一个继承自System.Web.UI.Page类的用户自定义的类。通过从Page基类继承,Web页面获得了大量的属性和方法,以供程序员在代码使用。

这些继承的特性包括了允许缓存功能、验证以及跟踪调试等。

以下简要的列出了Page类一些重要的基本属性

属性 描述
IsPostBack IsPostBack是一个布尔值。当IsPostBack属性为false时,表示该页面是第一次被当前用户请求;当IsPostBack属性为true时,表示该页面是响应控件事件而提交的回传请求,此时页面通常在视图状态中保存了页面的相关信息。在页面的Page.Load事件处理方法中,通常检查IsPostBack属性,以判断页面是第一次被当前用户请求还是回传请求,以确保用于初始化Web页面的代码只被执行一次
EnableViewState 该值只是当前页请求结束时,该页是否保持其视图状态,以及是否保持它包含的每一个服务器控件的视图状态。当把Web页面的EnableViewState属性设置为false时,将覆盖页面中所包含的所有控件的EnableViewState属性,此时页面上的所有控件都不能维护控件的状态信息
Application Application属性是一个保存应用程序级别信息的集合,该集合用于保存当前Web网站中所有被用户共享的信息。例如,可以使用Application集合来记录页面被访问的次数
Session Session属性是一个保存单个用户会话信息的集合,会话信息可以在不同的多个页面之间共享。例如,在一个电子商务的网站中,可以使用Session集合来保存当前用户的购物车
Cathe Cathe属性是一个集合,用于保存那些在创建时比较耗费时间的对象,以便在其他用户访问页面时或在其他页面中快速地重用这些对象。适当的使用该技术可以有效提高Web页面的执行性能。
Request Request属性是一个对当前页面的HttpRequest对象的引用,其中包含了当前Web请求的相关信心。通过HttpRequest对象,可以获得发起请求的客户端浏览器的详细信息,ASP.NET可以自己处理这些细节信息,因而获取这些浏览器详细信息的意义不大。但是,可以使用HttpRequest对象,通过使用查询字符(query string),将信息从一个页面传递给另一个页面。
Response Response属性是一个对当前页面的HttpResponse对象的引用,它表示ASP.NET将要发送给客户端浏览器的响应。
Server Server属性是一个队当前页面的HttpServerUtility对象的引用,通过该对象可以执行一些杂项的任务,比如,可以对字符串进行编码,以便这些字符串可以安全的存放在URL中
User 如果访问网站的用户已经通过了验证,则User属性被初始化为当前用户的信息

事件驱动编程与回送

事件驱动编程从本质上改变了编程模型。
利用事件,服务器上不再是以顺序执行的方式完成任务。

代码的执行顺序取决于与用户的交互

ASP.NET支持三组事件

  • 第一组是HTML内部的事件,这些事件可以在页面上发生,并由浏览器在客户端处理。例如:在客户端JavaScripts中运行的弹出工具提示。

  • 第二组是ASP.NET生成页面时自动发生的几个事件(ASP.NET页面级事件)。它们不需要用户干涉,在用户看到页面之前发生,我们使用这些事件建立页面。特别重要的页面级事件是postback,在用户单击提交按钮后,页面重新提交给服务器时触发。

  • 最后一组最大,包含用户与页面交互时发生的所有事件。

HTML事件

例:鼠标点击事件

<html>
<head><title>HTML Event Example</title>
</head>
<body><form><input onclick="alert('You have raised an event!')"type="button" value="Click Me"/></form>
</body>
</html>

ASP.NET的页面事件

ASP.NET中的一切元素均可归结为对象,特别是page对象。用户创建的每一个Web窗体都是一个page对象。可以将整个Web窗体看成是一个输出为HTML的可执行程序。每当访问服务器时都会经历这些阶段。

在请求ASP.NET Web窗体时,在Web服务器上就会自动发生一系列事件,如下所示:

Page_Init()事件

当初始化页面时发生此事件。可以利用 Page_Init()将该事件与要在.NET在页面上显示控件之前运行的代码建立关联。该事件与Page_Load事件的工作方式相同,但在Page_Load事件之前发生。

如果希望页面上的代码在其他事件发生之前执行,就需要把它们放在Page_Init()事件处理过程中。

Page_PreRender() 事件和Page_Render()

支持高级论题,如事务处理。

Page_Load()事件

整个页面第一次可见时发生(即在页面被读入内存,进行处理时发生),但在利用Page_Init实现某些服务器控件的初始化并显示出这些控件之后发生。

页面加载事件会自动调用Page_Load()事件处理过程。

Page.IsPostBack 属性

Page_Load 子例程会在页面每次加载时运行。
如果您仅希望在页面第一次加载时执行 Page_Load 子例程中的代码,您可以使用 Page.IsPostBack 属性。如果 Page.IsPostBack 属性为 false,则页面第一次被载入,如果为 true,则页面传回服务器(例如,通过点击表单上的按钮):

<script runat="server">
Sub Page_Load
if Not Page.IsPostBack thenlbl1.Text="The date and time is " & now()
end if
End SubSub Submit(s As Object, e As EventArgs)
lbl2.Text="Hello World!"
End Sub
</script><html>
<body>
<form runat="server">
<h3><asp:label id="lbl1" runat="server" /></h3>
<h3><asp:label id="lbl2" runat="server" /></h3>
<asp:button text="Submit" onclick="submit" runat="server" />
</form>
</body>
</html>

上面的例子仅在页面初次加载时创建 “The date and time is….” 这条消息。当用户点击 Submit 按钮时,submit 子例程将在第二个 label 创建 “Hello World!”,但第一个 label 中的日期和时间不会改变。

Page_Unload()事件

页面从IIS内存中卸载并发送给浏览器时发生。在控件事件处理后发生。改事件非常适用于关闭数据库的连接。其名称容易产生误导,因为这个事件并不是浏览器中的用户退出页面或关闭浏览器时发生。术语Unload是从IIS的角度来看的,而不是浏览器。

该事件最适合于结束资源的适用,例如关闭数据库连接。由于Page_Unload()事件是在ASP.NET页面的其他内容完成后执行,所以不能适用他来改变ASP.NET控件。

ASP.NET基础与入门:WebForm,事件驱动编程,Page类相关推荐

  1. 零基础如何入门学习电脑编程?

    零基础如何入门学习电脑编程?有哪些好的方法呢?现在带着疑问一起去了解一下吧. 1.了解编程历史的意义 了解一些编程的实质远比知道如何编程更有意义,不要在编程是怎么回事的情况下就去学习编程,这样对你的学 ...

  2. 用《叩响C#之门》复习C#基础知识 第八章 面向对象编程:类和对象(二)

    1.以对象为成员 类的成员不光可以是int.double等基本类型的变量,也可以是其他类的对象.其实也就是说,类的成员可以是所有的值类型和引用类型的成员变量. 2.静态成员 1)静态变量:描述类的整体 ...

  3. C语言基础知识入门和C语言入门基础知识大全

    一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...

  4. python外星人入侵游戏图片_跪求一个问题@关于外星人入侵游戏(《python编程基础从入门到实...

    我在学着编写<python编程基础从入门到实践>的"外星人入侵游戏"的时候,报错如下: Traceback (most recent call last): File ...

  5. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  6. python图形编程基础-Python从基础到入门系列教程

    本教程集合了Python基础&系统管理,从基础到入门,带你走进Python世界!对Python有兴趣的可以学习一下哦基础系列:1.课程简介2.Python下载和安装3.IDLE使用简介4.第1 ...

  7. 零基础前端入门,真正难在哪里?简说编程思想和逻辑思维

    很多同学跟我说,学前端学的很迷茫, 就这样,问他为啥迷茫吧,说也说不出来啥具体的.就是也学了一堆东西,也确实都是前端开发工作当中要用的.但依然不知道前路如何. 这里就有一个"前端入门的标准& ...

  8. 0基础如何入门Python编程

    Python目前已经成为最受欢迎的编程语言之一,吸引了一大批粉丝,但是很多人在要跨入的时候犹豫了,原因竟然是觉得零基础学习Python太难了,真的是这样吗?零基础入门Python编程学习有什么好的技巧 ...

  9. 学习笔记:Java 并发编程①_基础知识入门

    若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...

最新文章

  1. 【 Markdown 】Markdown 编辑器语法常用格式 ( 整理中 ... )
  2. 万级K8s集群背后etcd稳定性及性能优化实践
  3. P3211-[HNOI2011]XOR和路径【高斯消元】
  4. linux 所有命令无法使用
  5. Python突破拉钩反爬机制,采集各类招聘数据
  6. 不愧是我,短短10分钟就为公司省下了几万块 ( ー̀◡ー́ )
  7. 圣殿骑士的一篇关于WPF的培训好文,WPF应用与团队开发(转)
  8. Atitit。Js调用后台语言 java c#  php swing android  swt的方法大总结
  9. 虚拟机专用win7系统_手机上运行win系统!不是远程桌面!
  10. centOS 8 操作系统下载与安装
  11. Windbg基础-了解Symbols zz
  12. 华硕ROG冰刃5评测
  13. 使用nslookup命令检查DNS服务
  14. 阿里云搭建MQTT服务器并进行本地和服务器端联通测试
  15. 世界危机四伏 难道2012真的存在
  16. PC市场如何再起波澜?荣耀的创新或是答案
  17. CSS十问——好奇心+刨根问底=CSSer
  18. 揭秘英雄联盟的数据服务器
  19. 电信云堤·抗D(电信云堤清洗高防服务器)提供超强T级DDoS处理能力
  20. 定义Student类

热门文章

  1. MOOC《Python语言程序设计》(第15次)Python计算生态概览(第九周)
  2. 学习笔记-Hadamard矩阵的Kronecker积
  3. stl文件怎么用Java读取_将STEP文件转换为STL
  4. 梁宁《产品思维 30 讲》 笔记
  5. python 如何识别字符串中的人名 ,如何识别一串拼音字符串以及韵母的提取 (一些方法整理)
  6. Unity粒子系统基本
  7. EasyExcel 读取excel表 解决Empty row EasyExcel末尾出现非常多空白行跳过 EasyExcel跳过末尾空白行
  8. 解决客户 IE 浏览器“兼容性视图“设置带来的问题
  9. 使用poi操作word文档实现套打功能
  10. C语言入门基础_验证哥德巴赫猜想