ASP.NET 4.0 网站建设基础教程

前言:为什么学习 ASP.NET 4.0?

虽然 ASP.NET 4.0 是一个较老的版本(发布于 2010 年),但它依然是许多现有企业级项目的基础,理解其核心概念对于维护旧系统至关重要,更重要的是,ASP.NET 4.0 的许多核心思想(如 Web Forms 生命周期、服务器控件、状态管理等)在后续版本(包括现代的 ASP.NET Core)中都有体现或借鉴,学习它是进入 Web 开发领域的一个绝佳起点。

asp.net 4.0网站建设基础教程
(图片来源网络,侵删)

本教程将使用 Web Forms 模型,这是 ASP.NET 4.0 最主流的开发模式。


第一部分:环境搭建

在开始编码之前,我们需要安装必要的开发工具。

安装 Visual Studio 2010/2012/2025

  • 推荐版本:Visual Studio 2010 Ultimate/Professional 或 Visual Studio 2012/2025 (这些版本对 ASP.NET 4.0 提供了最好的支持)。
  • :安装时,请确保勾选以下组件:
    • Microsoft ASP.NET (核心框架)
    • ASP.NET MVC (可选,但推荐了解)
    • SQL Server Express (用于本地数据库)

创建第一个 ASP.NET 网站

  1. 打开 Visual Studio。
  2. 选择 文件 -> 新建 -> 网站
  3. 在模板窗口中,选择 Visual C# -> ASP.NET -> ASP.NET 网站空 Web 应用程序
    • 为什么选择“空 Web 应用程序”? 这会创建一个最干净的项目结构,避免生成大量默认文件,有助于我们更好地理解核心概念。
  4. 为网站选择一个位置和名称(MyFirstWebSite)。
  5. 点击 确定

你的解决方案资源管理器中应该只有一个文件:web.config,这是 ASP.NET 网站的配置文件。


第二部分:核心概念

一个 ASP.NET 网站由两种主要文件组成:

asp.net 4.0网站建设基础教程
(图片来源网络,侵删)
  1. aspx 文件:Web 窗体,是用户在浏览器中直接看到和交互的页面。Default.aspx
  2. aspx.cs 文件:代码隐藏文件,包含 C# 代码,用于处理页面的逻辑、数据和事件。Default.aspx.cs

一个简单的 "Hello, World!" 示例

  1. 在解决方案资源管理器中,右键点击项目 -> 添加 -> 新建项

  2. 选择 Web 窗体,命名为 Default.aspx,然后点击 添加

  3. 打开 Default.aspx 文件,切换到 视图,你会看到类似下面的 HTML 代码:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MyFirstWebSite._Default" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        </div>
        </form>
    </body>
    </html>
  4. <div></div> 标签之间,添加一个服务器控件 Label

    asp.net 4.0网站建设基础教程
    (图片来源网络,侵删)
    <asp:Label ID="lblMessage" runat="server" Text="Hello, World!"></asp:Label>
  5. F5 运行你的网站,浏览器会打开,并显示 "Hello, World!"。

分析

  • <%@ Page ... %>:页面指令,告诉编译器这个页面使用 C# 语言,其逻辑代码在 Default.aspx.cs 文件中。
  • <form id="form1" runat="server">:这是一个服务器端表单,所有服务器控件都必须放在这个表单内部。
  • <asp:Label ... />:这是一个服务器控件。runat="server" 属性表明它由服务器端代码处理,而不仅仅是静态文本。

第三部分:服务器控件

服务器控件是 ASP.NET Web Forms 的核心,它们是服务器端可编程的 HTML 元素。

常用服务器控件

控件类型 示例控件 用途
文本输入 TextBox 提供单行、多行或密码输入框。
按钮 Button, LinkButton, ImageButton 触发服务器端事件。
显示 Label, Literal 在页面上显示文本。Label 会渲染成 <span>Literal 直接输出文本。
选择 DropDownList, ListBox, RadioButtonList, CheckBoxList 提供单选或多选列表。
容器 Panel, PlaceHolder 用于组织和显示其他控件的容器。
数据 GridView, Repeater, DataList 用于显示和操作数据源中的数据。

控件事件与代码隐藏

让我们创建一个简单的登录页面来演示事件处理。

  1. 设计页面 (Login.aspx)

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="MyFirstWebSite.Login" %>
    <!DOCTYPE html>
    <html>
    <head runat="server">
        <title>登录页面</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <h3>用户登录</h3>
                <p>
                    <asp:Label ID="lblUsername" runat="server" Text="用户名:"></asp:Label>
                    <asp:TextBox ID="txtUsername" runat="server"></asp:TextBox>
                </p>
                <p>
                    <asp:Label ID="lblPassword" runat="server" Text="密码:"></asp:Label>
                    <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox>
                </p>
                <p>
                    <asp:Button ID="btnLogin" runat="server" Text="登录" OnClick="btnLogin_Click" />
                </p>
                <asp:Label ID="lblStatus" runat="server" ForeColor="Red"></asp:Label>
            </div>
        </form>
    </body>
    </html>
  2. 编写后台代码 (Login.aspx.cs)

    双击设计视图中的“登录”按钮,Visual Studio 会自动在 Login.aspx.cs 文件中创建 btnLogin_Click 事件处理程序,填入以下代码:

    using System;
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // 页面首次加载时执行的代码
        }
        protected void btnLogin_Click(object sender, EventArgs e)
        {
            // 获取用户输入
            string username = txtUsername.Text;
            string password = txtPassword.Text;
            // 简单的验证逻辑
            if (username == "admin" && password == "123456")
            {
                // 登录成功,重定向到欢迎页面
                Response.Redirect("Welcome.aspx");
            }
            else
            {
                // 登录失败,显示错误信息
                lblStatus.Text = "用户名或密码错误!";
            }
        }
    }
  3. 创建欢迎页面 (Welcome.aspx)Welcome.aspx 中放一个 Label 控件,用于显示欢迎信息。

    <asp:Label ID="lblWelcome" runat="server" Text=""></asp:Label>

    Welcome.aspx.cs 中,在 Page_Load 事件中设置文本:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) // 确保只在首次加载时执行
        {
            // 从 Session 中获取用户名并显示
            string username = Session["Username"] as string;
            lblWelcome.Text = "欢迎您, " + username + "!";
        }
    }

第四部分:状态管理

Web 是一种无状态协议,这意味着服务器默认不记得之前的请求,ASP.NET 提供了多种机制来在请求之间维护状态。

**1. ViewState (视图状态)