学编程,来源栈;先学习,再交钱
当前系列: ASP.NET 修改讲义

WebForm

曾经的王者!学习理由:

  1. 开阔眼界:见多识广,就是一种底气,就是你信心的来源
  2. 有可能:维护历史遗留代码
  3. 追忆一个时代:那是我逝去的青春呀……
  4. 波浪式前进,螺旋式上升

新建项目

只能是基于.NET Framework,默认只能在VS2019上创建:


.aspx:(route技术之前)ASP.NET技术的标志
.master:母版页(类似于MVC的layout)

route

默认和RazorPages类似,.aspx的路径就对应url的path。

但使用route之后,可以省略.aspx。

拖控件

双击.aspx文件,默认打开一个主要由HTML标签组成的页面。但里面也有类似这样的标签:

<asp:Content runat="server">

这些实际上就是WebForm里的“控件”。

现目前我们看到的是其Source,点击可切换到Design

就看到“可视化”的控件。(演示)

通过:Views - Toolbox 可以打开控件窗体:

可以看到,里面有大量的内置控件。

演示拖动:

  • 简单控件:Label+Textbox+Button
  • 复杂控件:Login

控件上可以设置属性,如:Text/Color等……

数据绑定

WinForm号称可以实现“无代码”编程 —— 这是几乎二十年前的技术哟!

值得一提的就是它的数据控件,可以通过图像界面,按提示一步一步的操作,直接和数据库绑定(类似DataSet)

事件驱动

除了设置控件的属性,还可以设置控件的事件。

演示:Button的click事件

  • aspx.cs:编写事件处理程序
    protected void Button1_Click(object sender, EventArgs e)
    {
        //Request.QueryString
        string input = this.txtUserName.Text;
  • aspx.design.cs:完成事件注册

包括页面的呈现,都是一个事件。

protected void Page_Load(object sender, EventArgs e)
{
    //Response

注意,这些事件都

  • 是“模拟”的。本质上,只有HTTP请求和响应,即:用户点击button,不过是发起一个HTTP请求,而如何处理该请求,被ASP.NET委托给该事件处理程序……
  • 是“服务器端”的。区别于JavaScript的事件和Ajax请求

为什么没落?

WebForm一度非常繁荣,除了微软官方的,还有各种开源的、商业的第三方控件(用户可以自定义控件)……

但是,因为:

  1. Ajax的兴起(50%):WebForm没有能够及时的响应Ajax的崛起,早期它各方面对Ajax都不友好:
    • 控件生成的HTML内容Id和Name加了一些“奇奇怪怪”的东西,
    • 没法响应HTML片段,更不用说JSON数据了
    • ……
    虽然后期进行了一些优化,引入了一些Ajax的组件,但黄花菜都凉了……
  2. 前后端分离(20%):前端人员根本搞不懂这些组件
  3. 只能基于.NET Framework,闭源付费(20%)
  4. 其他一些技术问题(10%),比如为了模拟“有状态”(HTTP本身是无状态的),引入(hidden input的)__ViewState,导致页面臃肿性能损害(但其实是可禁用的)

没落了。RazorPages可以视为其替代品:一样的以Page为核心,开源(基于.NET core)、前端开发人员友好、不影响Ajax……


WinForm

CS架构的桌面应用(UI)框架。

核心就是:组件的属性和时间。

WebForm其实就是参考WinForm设计的。

WPF

可以简单的理解为WinForm的升级版,更多自定义,更加炫酷。



教育就是当一个人把在学校所学全部忘光之后剩下的东西。

—— 伯尔赫斯·弗雷德里克·斯金纳

学习笔记
源栈学历
今天学习不努力,明天努力找工作

作业

觉得很 ,不要忘记分享哟!

任何问题,都可以直接加 QQ群:273534701

在当前系列 ASP.NET 中继续学习:

下一课: 已经是最后一课了……

多快好省!前端后端,线上线下,名师精讲

  • 先学习,后付费;
  • 不满意,不要钱。
  • 编程培训班,我就选源栈

更多了解 加:

QQ群:273534701

答疑解惑,远程debug……

B站 源栈-小九 的直播间

写代码要保持微笑 (๑•̀ㅂ•́)و✧

公众号:源栈一起帮

二维码