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 MVC 与 WebForms 相结合

下周要搞大事情(ASP.NET Core & WebForms)!

ASP.NET WebForms FriendlyUrlSegments 不包含采用 0 个参数的构造函数

在 ASP.NET 4.5 WebForms 中通过 bundle.config 与 BundleConfig.cs 捆绑资源

基础版限时免费致敬WebForms,ASP.NET Core也能这么玩!