杰瑞科技汇

ASP Web开发教程从哪开始学?

ASP.NET Web 开发完整教程

第一部分:基础入门

第一章:ASP.NET 是什么?

在学习任何技术之前,我们首先要明白它是什么,解决什么问题。

ASP Web开发教程从哪开始学?-图1
(图片来源网络,侵删)

1 定义 ASP.NET 是由微软开发的一个用于构建 Web 应用程序的免费、开源框架,它运行在 Windows 服务器上(或通过 .NET 5/6/7+ 跨平台),允许开发者使用强大的 C# 或 VB.NET 语言来创建动态的、数据驱动的网站和 Web 服务。

2 核心概念

  • 框架:它不是一门语言,而是一个“工具箱”,提供了构建 Web 应用所需的各种类库、工具和模板。
  • 服务器端技术:ASP.NET 代码在服务器上执行,生成 HTML、CSS 和 JavaScript,然后发送到用户的浏览器,这意味着用户看不到你的 C# 代码,只看到最终的网页内容。
  • 现代演进:传统的 ASP.NET Web Forms 已经过时,我们主要学习两个现代分支:
    • ASP.NET MVC:一种基于模型-视图-控制器架构的模式,强调关注点分离和测试驱动开发。
    • ASP.NET Core:微软最新的、跨平台的、高性能的框架,它融合了 MVC 和 Web API 的优点,是目前唯一推荐用于新项目的框架。本教程将主要围绕 ASP.NET Core 展开。

3 为什么选择 ASP.NET Core?

  • 跨平台:可以在 Windows、Linux 和 macOS 上运行和部署。
  • 高性能:经过高度优化,性能极佳。
  • 开源:拥有活跃的社区,持续更新和改进。
  • 云原生:为部署在云端(如 Azure)而设计。
  • 统一框架:使用同一套技术栈构建网站、Web API 和移动后端。

第二章:开发环境搭建

在开始编码前,我们需要准备好工具。

ASP Web开发教程从哪开始学?-图2
(图片来源网络,侵删)

1 必需软件

  1. .NET SDK (Software Development Kit):包含了编译和运行 .NET 应用程序所需的一切,下载地址:https://dotnet.microsoft.com/download
    • 选择最新的 LTS (长期支持) 版本,.NET 6.0, 7.0 或 8.0。
  2. 代码编辑器
    • Visual Studio Code (VS Code):轻量级、跨平台、免费,强烈推荐,你需要安装 C# 扩展包。
    • Visual Studio (VS):功能最强大的 IDE,但体积较大,有社区版免费,对于初学者,VS Code 完全足够。

2 验证安装 打开终端(在 Windows 上是 cmdPowerShell,在 macOS/Linux 上是 Terminal),输入以下命令:

dotnet --version

如果显示了版本号,说明 .NET SDK 安装成功。


第三章:创建你的第一个 ASP.NET Core 应用

我们将使用命令行工具创建一个最简单的 Web 应用。

ASP Web开发教程从哪开始学?-图3
(图片来源网络,侵删)

1 创建项目 在终端中,导航到你想要存放项目的文件夹,然后运行:

dotnet new webapp -o MyFirstWebApp
  • dotnet new webapp:使用 webapp 模板创建一个 Razor Pages 项目(Razor Pages 是 ASP.NET Core 中创建网页最简单的方式)。
  • -o MyFirstWebApp:将项目创建在名为 MyFirstWebApp 的文件夹中。

2 运行项目 进入项目目录:

cd MyFirstWebApp

然后运行应用程序:

dotnet run

你会看到类似下面的输出:

info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7123
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5123
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.

在浏览器中打开 https://localhost:7123(或 http://localhost:5123),你将看到一个默认的欢迎页面。

恭喜!你已经成功运行了你的第一个 ASP.NET Core 应用!


第二部分:核心概念详解

现在我们来深入理解 ASP.NET Core 的工作原理。

第四章:请求处理流程

一个典型的 HTTP 请求在 ASP.NET Core 中是这样处理的:

  1. 请求到达:用户在浏览器中输入 URL,向你的服务器发送一个 HTTP 请求。
  2. 中间件:请求会经过一个由“中间件”组成的管道,中间件是一些小的组件,可以处理请求(如认证、日志记录、压缩响应)并决定是将其传递给下一个中间件,还是直接返回响应。
  3. 路由:中间件管道的末端是路由系统,它检查请求的 URL,并将其映射到应用程序中特定的代码(称为“终结点” EndPoint)。
  4. 控制器/页面模型:路由找到对应的代码后,会执行它,在 MVC 中,这通常是控制器的一个动作方法;在 Razor Pages 中,这是一个页面模型OnGetOnPost 方法。
  5. 业务逻辑:控制器/页面模型会执行业务逻辑,比如从数据库读取数据、进行计算等。
  6. 视图:控制器/页面模型会选择一个视图(一个 .cshtml 文件),并将数据传递给它,视图引擎(如 Razor)将 C# 代码和 HTML 混合在一起,生成最终的 HTML。
  7. 响应返回:生成的 HTML 通过中间件管道返回给用户的浏览器。

第五章:Razor Pages (推荐入门)

Razor Pages 是 ASP.NET Core 中创建页面的标准方式,非常直观。

1 Razor 语法 Razor 文件(.cshtml)混合了 HTML 和 C#。

  • 符号:用于从 C# 切换到 HTML。
  • 用于执行 C# 代码块。
  • @变量名:用于显示 C# 变量的值。

示例:Pages/Index.cshtml

@page
@model MyFirstWebApp.Pages.IndexModel
@{
    ViewData["Title"] = "Home page";
}
<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
  • @page:指令,告诉这个文件是一个 Razor Page,可以直接通过 URL 访问。
  • @model ...:指定这个页面使用的模型类。

2 页面模型 每个 .cshtml 文件都有一个对应的 .cs 文件(代码后置文件),用于存放 C# 逻辑。

示例:Pages/Index.cshtml.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace MyFirstWebApp.Pages
{
    public class IndexModel : PageModel
    {
        private readonly ILogger<IndexModel> _logger;
        public IndexModel(ILogger<IndexModel> logger)
        {
            _logger = logger;
        }
        public void OnGet()
        {
            // 当页面通过 GET 请求访问时,此方法被调用
            ViewData["Message"] = "Hello from the C# code!";
        }
    }
}
  • OnGet():这是一个处理 HTTP GET 请求的方法,当用户访问此页面时,它会被自动执行。
  • ViewData:一个字典对象,用于从页面模型向视图传递数据。

3 在视图中使用数据 修改 Pages/Index.cshtml,显示从模型传来的数据:

<p>@ViewData["Message"]</p>

现在刷新页面,你会看到 "Hello from the C# code!"。


第六章:表单与数据绑定

Web 应用经常需要从用户那里收集数据,我们使用 HTML 表单来实现。

1 创建一个简单的表单 创建一个新页面 Pages/Contact.cshtmlPages/Contact.cshtml.cs

Pages/Contact.cshtml.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace MyFirstWebApp.Pages
{
    public class ContactModel : PageModel
    {
        [BindProperty] // 将表单字段自动绑定到这个属性
        public string UserName { get; set; } = "";
        public void OnGet()
        {
        }
        public void OnPost()
        {
            // 当表单通过 POST 提交时,此方法被调用
            // UserName 属性已经被自动填充了表单中的值
        }
    }
}

Pages/Contact.cshtml

@page
@model MyFirstWebApp.Pages.ContactModel
<h1>Contact Us</h1>
<form method="post">
    <div>
        <label for="userName">Your Name:</label>
        <input type="text" id="userName" name="UserName" />
    </div>
    <button type="submit">Submit</button>
</form>
  • method="post":指定使用 HTTP POST 方法提交表单。
  • name="UserName":输入框的 name 属性必须与页面模型中 [BindProperty] 标记的属性名 UserName 完全一致。
  • 当你点击提交按钮时,会触发 OnPost() 方法,UserName 的值会被自动设置。

第三部分:进阶主题

掌握了基础后,我们来看看如何构建更复杂的应用。

第七章:使用数据库

Web 应用几乎总是需要持久化存储数据,我们使用 Entity Framework Core (EF Core) 作为对象关系映射工具。

1 安装 EF Core 在项目目录下运行命令:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Design

2 创建数据模型 创建一个 Models 文件夹,并定义一个简单的 TodoItem 类。

// Models/TodoItem.cs
namespace MyFirstWebApp.Models
{
    public class TodoItem
    {
        public int Id { get; set; }
        public string? Task { get; set; }
        public bool IsDone { get; set; }
    }
}

3 创建数据库上下文 数据库上下文是 EF Core 的核心,它连接你的模型和数据库。

// Data/TodoContext.cs
using Microsoft.EntityFrameworkCore;
using MyFirstWebApp.Models;
namespace MyFirstWebApp.Data
{
    public class TodoContext : DbContext
    {
        public TodoContext (DbContextOptions<TodoContext> options)
            : base(options)
        {
        }
        public DbSet<TodoItem> TodoItems { get; set; } = null!;
    }
}

4 配置数据库连接Program.cs 中注册 DbContext

// Program.cs
using Microsoft.EntityFrameworkCore;
using MyFirstWebApp.Data;
var builder = WebApplication.CreateBuilder(args);
// 1. 添加服务
builder.Services.AddRazorPages();
// 注册 TodoContext
builder.Services.AddDbContext<TodoContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
// ... 其余代码 ...

appsettings.json 中添加连接字符串:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyFirstWebAppDb;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  // ...
}

5 创建数据库 在终端中运行命令(确保项目已编译):

dotnet ef database update

这会根据你的模型创建一个名为 MyFirstWebAppDb 的 LocalDB 数据库。

6 在页面中使用数据 现在你可以在页面模型中注入 TodoContext 并进行数据库操作了(在 OnGet 中查询所有待办事项)。


第八章:ASP.NET MVC 简介

虽然我们以 Razor Pages 入门,但了解 MVC 也很重要,因为它在构建大型 API 和复杂应用时非常流行。

  • M (Model):与 Razor Pages 中的模型相同,代表数据和业务逻辑。
  • V (View):与 Razor Pages 中的视图相同,负责显示 UI。
  • C (Controller):接收 HTTP 请求,调用模型,选择视图并返回响应,它是一个独立的类,不像 Razor Pages 那样和视图文件紧密绑定。

一个典型的 MVC 请求流程: 请求 -> Controller (Action Method) -> Model -> View -> HTML 响应


第九章:部署

完成开发后,你需要将应用部署到服务器上。

  1. 发布应用:在项目目录下运行:
    dotnet publish -c Release -o ./publish

    这会生成一个独立的文件夹,包含了运行应用所需的一切。

  2. 部署方式
    • IIS (Internet Information Services):在 Windows Server 上最常用的 Web 服务器。
    • Azure App Service:微软提供的云平台,是部署 ASP.NET Core 应用的最简单、最推荐的方式。
    • Docker:将应用容器化,便于在任何支持 Docker 的环境中部署。

第四部分:学习资源与总结

推荐学习资源

  1. 官方文档 (首选)
  2. 视频教程
    • Channel 9 (微软官方):有大量高质量的 ASP.NET Core 教程。
    • freeCodeCamp:有非常受欢迎的入门到进阶的完整视频课程。
  3. 书籍

    《ASP.NET Core in Action》:非常经典的书籍,内容深入。

  4. 社区
    • Stack Overflow:遇到问题,先在这里搜索。
    • GitHub:查看 ASP.NET Core 源码和优秀项目。

学习路径建议

  1. 打好基础:熟练掌握 C# 语言、HTML、CSS 和 JavaScript。
  2. 从 Razor Pages 开始:理解请求-响应模型、页面模型、视图和表单绑定。
  3. 学习数据访问:掌握 EF Core 的基本用法,如增删改查。
  4. 探索进阶主题:如身份验证、授权、依赖注入、中间件等。
  5. 学习 MVC:理解其架构,并知道何时选择 MVC 而非 Razor Pages。
  6. 动手实践:尝试构建一个小型项目,比如博客、待办事项列表或简单的电商网站。

ASP.NET Core 是一个功能强大且现代化的框架,拥有美好的未来,希望这份教程能帮助你开启你的 ASP.NET Web 开发之旅!祝你编码愉快!

分享:
扫描分享到社交APP
上一篇
下一篇