Asp.net WebForms 概述
Posted 全栈精英
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Asp.net WebForms 概述相关的知识,希望对你有一定的参考价值。
本篇主要是快速入门Asp.net WebForms
含操作和基本概念
献给虽已小众,依旧大气的微软开发平台的粉丝们
开发环境:Visual Studio 2019 (俗称 VS2019)
服务器环境:VS2019自带的IIS(无需安装win10的IIS)
什么是ASP.NET Webform 框架?
基于.NET Framework的网页开发框架
快速 的网页项目开发平台
以控件为核心 ,以事件为驱动
推荐使用C#语言
支持跨平台(Linux)
俗称为 Web Forms
网页的后缀名为 .aspx(注意:.asp不是.net开发的网页,是微软早期的VB开发)
最常见的入门操作是:在VS中打开aspx,从“工具箱”拖拽控件到页面(注意:工具箱从“视图”菜单点击出现)
与java开发体系相比:Asp.net是中小型项目开发的王者,但是大型项目嘛,我更推荐 spring 全家桶
基本操作:
新建项目:
Web》ASP.NET Web应用程序》Empty(空),并勾选Web Forms
打开项目:
打开源码文件目录,将.sln文件直接拖放到VS
新建页面:
点击项目名称,右键添加》Web窗体,起名Default(不要带后缀名)
启动页面:
快速启动页面:在页面上右键》在浏览器中查看
调试启动页面:点击工具栏的绿色三角箭头
项目结构:
App_Data :系统文件夹,放数据文件
Models :自定义类
Global.asax : 全局(所有页面共享)配置类,项目启动后首先执行
packages.config : 包管理配置文件
Web.config :站点配置文件
xxx.aspx : Web窗体页面
页面后置代码:
WebForm框架将页面与页面的后端代码分离,如:Default.aspx 页面, 其后置代码为:Default.aspx.cs 文件
页面运行后,Web窗体页面与其后置代码一起编译运行
运行流程步骤:
发起请求 URL:http://localhost:xxxxx/Default.aspx
服务器接收请求,调用CLR编译Default.aspx
服务器的内存中 初始化页面对象执行事件等页面周期 :
Page p = new Page()
服务器将执行完毕的页面对象转为html流响应给浏览器 :
p对象转为 HTML响应流
p对象销毁
浏览器接收到HTML响应流,渲染出页面
注意:
需要运行页面的web服务器软件不需要配置,默认随网页的启动自动调用 (IIS Express),用于开发环境
最终发布选用的web服务器软件是IIS ,要独立安装,用于生产环境
推荐的服务器操作系统通常是 Windows Server 2016 / 2019
特别提醒:Linux Server 也可以跑 .net 程序
.NET Framework的基本组成:
.NET Framework = CLR + FCL
(CLR:公共语言运行时,FCL:基础类库)
CLR包含CTS、CLS实现多语言的集成
(CTS:公共类型系统,CLS:通用语言规范)
C#程序的编译过程:
C#源代码——>csc编译器——>msil——>jit编译器——>机器指令
csc:C#语言的编译器,C#的源代码是.cs
msil:微软中间语言,独立于操作系统的特定代码,用来跨平台编译,(形式上是:.exe、.dll)
jit:即时编译器,用来实现msil的编译,也叫二次编译
控件
运行在服务端的高度集成功能的特定标签,以 <asp:控件名> 开头
对客户端标签的功能封装,自动生成对应的HTML标签
必须放在form里面,必须有runat属性
如:asp:button 是对 <button>标签的封装,所以asp:button有一个button类型
web服务器:
IIS:互联网信息服务器,专用于windows平台的web服务器
默认端口:80,可以不用显示写出:如:http://IP:80 与 http://IP 相同
可以同时支持多个在线站点 和 虚拟目录
虚拟目录:http://localhost : 端口/目录名
在线站点:http://localhost : 端口/
页面:
ASP.NET的页面是aspx扩展名,默认的首页是Default.aspx
每个页面都有对应的后台C#代码(称为“后置代码”),不推荐在页面中使用大量的<% %>
页面指令:
Page:是页面指令,用来配置页面的参数
Language:当前页面上使用C#编写服务端代码块
AutoEventWireup:自动启用页面的事件
CodeBehind:当前页面的后置代码文件名
Inherits:当前页面的类型
所有页面的直接父类是:Page
页面的加载事件:Page_Load 页面在服务端加载时自动触发,常用来做控件的数据绑定
什么是页面执行周期(面试题):
初始化事件 OnInit:将页面对象执行初始化
页面加载事件 Page_Load : 页面初始化成功可以直接使用页面上面的控件
呈现事件Render:页面对象执行到尾声,开始准备响应的输出流(HTML流)
卸载事件OnUnload :页面对象执行完毕释放服务端资源
上面的事件全部完毕,服务端开始响应页面,客户端浏览器显示出页面
页面执行的特点:
每次请求页面都会有一次完整的页面周期
页面对象随着页面的请求每次都会从初始化到销毁
页面的四种请求情况:
页面首次运行 —— GET请求
执行 页面加载事件
点击按钮提交运行 —— POST请求
执行 页面加载事件
执行 按钮的点击事件
按下浏览器的刷新按钮(或F5)—— POST或GET请求
执行你最后一次的操作
容易导致网页的重复提交
执行 页面加载事件
如何优化页面的提交,使用页面的回发判断:
回发:当页面加载后,再次发起的POST请求称为页面回发,常见如按钮的点击动作
Page类的IsPostBack属性 :判断是否为页面的回发请求,如果是回发请求,可以使用 if (!IsPostBack) 避免重复的执行
Form标签在哪里:
ASPX页面的Form被服务端封装,action默认为本页面,method默认post,不能修改
补充:
上面的介绍较为简单,适合入门。只看aspx页面的完整周期就极为复杂,涵盖有众多的事件。这也体现微软技术的特点:入门容易,精通很难。不过你如果是微软的粉丝,加油啃吧。切记:观察好微软的动向,他们会随时推到重来 !
以上是关于Asp.net WebForms 概述的主要内容,如果未能解决你的问题,请参考以下文章
从 ASP.NET WebForms 迁移到 ASP.NET MVC 的建议?
下周要搞大事情(ASP.NET Core & WebForms)!
ASP.NET WebForms FriendlyUrlSegments 不包含采用 0 个参数的构造函数
在 ASP.NET 4.5 WebForms 中通过 bundle.config 与 BundleConfig.cs 捆绑资源