凌峰创科服务平台

ASP.NET如何快速搭建高效网站?

为什么选择 ASP.NET?

在开始之前,了解它的优势很重要:

ASP.NET如何快速搭建高效网站?-图1
(图片来源网络,侵删)
  1. 高性能:ASP.NET Core 经过重新设计,性能极高,尤其在处理高并发请求方面表现出色。
  2. 跨平台:它可以在 Windows、Linux 和 macOS 上运行,部署选择非常灵活。
  3. 开源:由微软和全球社区共同维护,完全开源,拥有丰富的生态系统。
  4. 安全性:内置了多种安全功能,如身份验证、授权、数据保护等,可以有效防范常见的网络攻击。
  5. 语言支持:主要使用 C#,一种现代、类型安全、功能强大的编程语言,开发体验优秀。
  6. 丰富的工具链:拥有 Visual Studio (Windows) 和 Visual Studio Code (跨平台) 这两款顶级的集成开发环境,提供强大的调试、智能提示和项目管理功能。
  7. 可扩展性:从单页应用到大型分布式微服务架构,ASP.NET 都能很好地支持。

核心技术栈:ASP.NET Core MVC / Razor Pages

当你用 ASP.NET 做网站时,通常会用到以下几个核心技术:

  1. ASP.NET Core:这是整个框架的基础,它负责处理 HTTP 请求、依赖注入、配置管理等底层工作。

  2. MVC (Model-View-Controller) 架构模式:这是一种非常经典的设计模式,将网站代码清晰地分为三部分:

    • Model (模型):负责数据和业务逻辑,它定义了你的数据结构(如 UserProduct 类),并处理数据的增删改查等操作。
    • View (视图):负责展示数据,它通常是 HTML 页面,其中嵌入了 Razor 语法来显示从 Model 传来的数据。
    • Controller (控制器):负责接收用户请求,调用 Model 处理数据,然后选择一个 View 返回给用户,它是 Model 和 View 之间的“协调者”。
  3. Razor 语法:这是 ASP.NET Core 中用于在 HTML 中嵌入 C# 代码的标记语法,它简洁、高效,是生成动态内容的核心。

    ASP.NET如何快速搭建高效网站?-图2
    (图片来源网络,侵删)
    • 示例:<h1>@Model.UserName</h1> (在 HTML 中显示 C# 变量)
    • 示例:@if (IsLoggedIn) { <a href="/logout">退出</a> } (条件渲染)
  4. Entity Framework Core (EF Core):这是微软官方的对象关系映射器,它让你可以用 C# 对象(Model)来操作数据库,而无需编写复杂的 SQL 语句,这极大地提高了开发效率。


如何开始:一个简单的“Hello World”网站

这里我们使用 Visual Studio 2025Razor Pages(比 MVC 更简单,适合新手)来创建项目。

步骤 1:安装环境

  • 安装 .NET 6 SDK (或更高版本)下载地址
  • 安装 Visual Studio 2025 Community (免费版):下载地址
    • 安装时,务必勾选 “.NET 桌面开发”“ASP.NET 和 Web 开发” 工作负载。

步骤 2:创建项目

  1. 打开 Visual Studio 2025。
  2. 点击 “创建新项目” (Create a new project)。
  3. 在模板搜索框中输入 Razor Pages,选择 “ASP.NET Core Web App” 模板,然后点击 “下一步”。
  4. 填写项目名称(如 MyFirstWebApp),选择一个位置,点击 “下一步”。
  5. 在 “其他信息” 页面:
    • 框架:选择 .NET 6.0 或更高版本。
    • 认证类型:选择 “无” (No Authentication),因为我们现在只需要一个简单的页面。
    • 勾选 “为 HTTPS 配置” (Configure for HTTPS)。
  6. 点击 “创建”,Visual Studio 会为你生成一个完整的项目结构。

步骤 3:理解项目结构

打开项目后,你会看到几个重要的文件夹:

  • Pages:存放所有的 Razor 页面文件,每个 .cshtml 文件代表一个页面。
    • Index.cshtml:网站的首页。
    • Privacy.cshtml:隐私页。
    • _ViewStart.cshtml:定义所有页面默认使用的布局文件。
    • Error.cshtml:错误页。
  • wwwroot:存放静态资源,如 CSS、JavaScript 文件、图片等。
  • appsettings.json:应用程序的配置文件(如数据库连接字符串)。
  • Program.cs:应用程序的入口点,在这里配置服务(如 MVC)和请求管道。
  • Startup.cs:在较新版本的 .NET 中,配置逻辑已移至 Program.cs

步骤 4:修改首页并运行

  1. 打开 Pages/Index.cshtml 文件,你会看到默认的 HTML 内容。

  2. 修改 <h1> 标签的内容,

    @page
    @model IndexModel
    @{
        ViewData["Title"] = "Home page";
    }
    <div class="text-center">
        <h1 class="display-4">欢迎使用我的第一个 ASP.NET 网站!</h1>
        <p>欢迎来到 C# 和 ASP.NET Core 的世界。</p>
    </div>
  3. 按下 F5 或点击工具栏上的 “播放” 按钮来运行项目。

  4. 浏览器会自动打开,显示你修改后的页面,恭喜,你已经成功创建并运行了你的第一个 ASP.NET 网站!


实战:构建一个简单的“待办事项”列表

让我们来做一个更有趣的功能:一个可以添加和显示待办事项的列表。

步骤 1:创建数据模型

Models 文件夹(如果没有就创建一个)中,创建一个 TodoItem.cs 文件:

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

步骤 2:创建数据库上下文

这个类是 EF Core 的核心,负责与数据库交互。

  1. Models 文件夹中创建 TodoDbContext.cs 文件:

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

步骤 3:注册数据库服务

打开 Program.cs,添加以下代码来注册 EF Core 服务和数据库上下文:

// Program.cs
// ... 现有的 using 语句 ...
using Microsoft.EntityFrameworkCore;
using MyFirstWebApp.Models; // 添加这一行
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorPages();
// 添加以下代码
builder.Services.AddDbContext<TodoDbContext>(options =>
    options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")));
var app = builder.Build();
// ... 其余代码 ...

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

{
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=todo.db"
  },
  // ... 其他配置 ...
}

步骤 4:应用数据库迁移

EF Core 可以根据你的模型自动创建数据库。

  1. 在 Visual Studio 的 “程序包管理器控制台” (Package Manager Console) 中 (工具 -> NuGet 包管理器 -> 程序包管理器控制台)。
  2. 依次执行以下命令:
    Add-Migration InitialCreate
    Update-Database

    这会创建一个 Migrations 文件夹,并根据你的模型生成一个 todo.db 数据库文件。

步骤 5:创建 Razor 页面

  1. Pages 文件夹上右键 -> 添加 -> 新建项。

  2. 选择 “Razor 页面 - 空”,命名为 TodoList.cshtml

  3. TodoList.cshtml.cs (后端代码):

    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Mvc.RazorPages;
    using MyFirstWebApp.Models;
    using System.Linq;
    namespace MyFirstWebApp.Pages
    {
        public class TodoListModel : PageModel
        {
            private readonly TodoDbContext _context;
            public TodoListModel(TodoDbContext context)
            {
                _context = context;
            }
            public List<TodoItem> TodoItems { get; set; } = new();
            public void OnGet()
            {
                TodoItems = _context.TodoItems.ToList();
            }
            public IActionResult OnPostAddItem(string task)
            {
                if (!string.IsNullOrEmpty(task))
                {
                    var newItem = new TodoItem { Task = task, IsDone = false };
                    _context.TodoItems.Add(newItem);
                    _context.SaveChanges();
                }
                return RedirectToPage();
            }
            public IActionResult OnPostToggleDone(int id)
            {
                var item = _context.TodoItems.Find(id);
                if (item != null)
                {
                    item.IsDone = !item.IsDone;
                    _context.SaveChanges();
                }
                return RedirectToPage();
            }
        }
    }
  4. TodoList.cshtml (前端视图):

    @page
    @model MyFirstWebApp.Pages.TodoListModel
    @{
        ViewData["Title"] = "待办事项";
    }
    <h1>我的待办事项</h1>
    <form method="post">
        <div class="input-group">
            <input type="text" name="task" class="form-control" placeholder="输入新任务..." />
            <button type="submit" asp-page-handler="AddItem" class="btn btn-primary">添加</button>
        </div>
    </form>
    <hr />
    <ul class="list-group">
        @foreach (var item in Model.TodoItems)
        {
            <li class="list-group-item @(item.IsDone ? "list-group-item-secondary" : "")">
                <div class="d-flex justify-content-between align-items-center">
                    <span>@item.Task</span>
                    <form method="post">
                        <input type="hidden" name="id" value="@item.Id" />
                        <button type="submit" asp-page-handler="ToggleDone" class="btn btn-sm btn-outline-secondary">
                            @(item.IsDone ? "标记未完成" : "标记完成")
                        </button>
                    </form>
                </div>
            </li>
        }
    </ul>

步骤 6:添加链接和运行

打开 Pages/Index.cshtml,在导航栏中添加一个指向待办事项列表的链接:

<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
    <div class="container-fluid">
        <a class="navbar-brand" asp-area="" asp-page="/Index">MyFirstWebApp</a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
        <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
            <ul class="navbar-nav flex-grow-1">
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-page="/Index">首页</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-page="/TodoList">待办事项</a> <!-- 添加这一行 -->
                </li>
                <li class="nav-item">
                    <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">隐私</a>
                </li>
            </ul>
        </div>
    </div>
</nav>

现在运行项目,点击导航栏的 “待办事项”,你就可以添加、查看和标记任务完成了!


部署你的网站

网站开发完成后,需要部署到服务器上才能被用户访问。

  1. 发布网站

    • 在 Visual Studio 中,右键点击你的项目 -> “发布”。
    • 选择 “文件夹”、“FTP” 或 “Azure App Service” 等目标。
    • Visual Studio 会编译你的项目并生成所有必要的文件到一个文件夹中。
  2. 部署到服务器

    • Windows Server + IIS:最传统的部署方式,在 Windows Server 上安装 IIS,然后将发布后的文件复制到网站目录即可。
    • Linux Server + Nginx/Apache:因为 ASP.NET Core 是跨平台的,你可以部署到任何 Linux 服务器,使用 Nginx 或 Apache 作为反向代理,将请求转发到运行中的 Kestrel 服务器。
    • Docker 容器:将你的应用打包成一个 Docker 镜像,然后运行在任何支持 Docker 的环境中,这是现代应用部署的推荐方式,因为它提供了环境一致性和高可移植性。
    • 云平台:如 Azure App ServiceAWS Elastic BeanstalkGoogle Cloud App Engine 等,这些平台提供了最简单、最便捷的部署和管理方式,通常会自动处理负载均衡、扩展和健康检查。

学习资源和最佳实践

  • 官方文档ASP.NET Core 文档 是最权威、最全面的学习资料。
  • Visual Studio 文档Visual Studio 文档
  • 最佳实践
    • 关注点分离:严格遵守 MVC/Razor Pages 的职责划分。
    • 依赖注入:尽量通过构造函数注入依赖,而不是在类中直接 new 对象,这有利于单元测试和解耦。
    • 使用异步编程:在处理 I/O 操作(如数据库查询、网络请求)时,始终使用 asyncawait,以提高应用的吞吐量。
    • 安全性:始终对用户输入进行验证和编码,使用 ASP.NET Core 内置的身份验证和授权机制。
    • 性能:启用编译、使用响应缓存、优化数据库查询等。

希望这份详细的指南能帮助你顺利开启 ASP.NET 网站开发之旅!祝你编码愉快!

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