这个教程将使用 ASP.NET Web Forms 技术,因为它对于初学者来说非常直观,并且能快速上手,如果您对更现代的 MVC 感兴趣,可以在文末找到指引。

asp.net个人网页代码
(图片来源网络,侵删)

第一步:创建项目和基础结构

我们需要创建一个 ASP.NET Web Forms 项目。

  1. 打开 Visual Studio
  2. 选择 "创建新项目" (Create a new project)。
  3. 在模板搜索框中输入 ASP.NET Web Application,然后选择它并点击 "下一步"。
  4. 为你的项目命名,MyPersonalWebSite,然后点击 "创建"。
  5. 在下一个窗口中,选择 "Web Forms" 模板,然后点击 "创建"。

Visual Studio 会为你创建一个包含默认文件(如 Default.aspx, Site.master 等)的项目结构,这些文件构成了你网站的基础。

关键文件说明:

  • Default.aspx: 你的网站首页。
  • Site.master: 母版页,这是一个模板页,定义了所有页面的共同布局(如页头、页脚、导航菜单),其他内容页(如 Default.aspx)会“套用”这个模板。
  • Web.config: 网站的配置文件,用于存储数据库连接字符串、应用程序设置等。
  • App_Data: 存放数据文件(如 .mdf 数据库文件)的文件夹。

第二步:设计母版页 (Site.master)

母版页是网站的骨架,我们在这里设计通用的布局。

asp.net个人网页代码
(图片来源网络,侵删)

打开 Site.master 文件,切换到 "源" (Source) 视图,默认的代码比较复杂,我们可以简化它,创建一个清晰的布局。

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="MyPersonalWebSite.SiteMaster" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head runat="server">
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /><%: Page.Title %> - 我的个人网站</title>
    <!-- 引入 Bootstrap CSS 用于快速美化界面 -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <asp:PlaceHolder runat="server">
        <%: Scripts.Render("~/bundles/modernizr") %>
    </asp:PlaceHolder>
    <webopt:BundleReference runat="server" Path="~/Content/css" />
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
</head>
<body>
    <form runat="server">
        <asp:ScriptManager runat="server">
            <Scripts>
                <!-- ... 忽略这些脚本,它们用于兼容性 ... -->
            </Scripts>
        </asp:ScriptManager>
        <!-- 1. 页头 -->
        <header>
            <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark border-bottom box-shadow mb-3">
                <div class="container">
                    <a class="navbar-brand" runat="server" href="~/">我的网站</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" runat="server" href="~/">首页</a></li>
                            <li class="nav-item"><a class="nav-link" runat="server" href="~/About.aspx">关于我</a></li>
                            <li class="nav-item"><a class="nav-link" runat="server" href="~/Contact.aspx">联系方式</a></li>
                            <li class="nav-item"><a class="nav-link" runat="server" href="~/Blog.aspx">博客</a></li>
                        </ul>
                    </div>
                </div>
            </nav>
        </header>
        <!-- 2. 内容区域 -->
        <div class="container body-content">
            <asp:ContentPlaceHolder ID="MainContent" runat="server">
            </asp:ContentPlaceHolder>
        </div>
        <!-- 3. 页脚 -->
        <footer class="border-top footer text-muted">
            <div class="container">
                &copy; <%: DateTime.Now.Year %> - 我的个人网站
            </div>
        </footer>
        <!-- 引入 Bootstrap JS -->
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
    </form>
</body>
</html>

说明:

  • 我们使用了 Bootstrap 框架来快速创建美观的响应式布局和导航栏。
  • <asp:ContentPlaceHolder ID="MainContent" runat="server"> 是一个占位符,当你创建一个使用此母版页的页面时,你的页面内容会放在这里。
  • 导航栏中的 href="~/About.aspx" 等链接指向我们将要创建的其他页面。

第三步:创建首页 (Default.aspx)

首页是网站的入口,我们将创建一个包含欢迎语、个人简介和最新博客文章列表的首页。

  1. 在 "解决方案资源管理器" 中,右键点击项目 -> "添加" -> "新建项"。
  2. 选择 "Web 窗体",命名为 Default.aspx
  3. 确保 "选择母版页" 勾选,并选择 Site.master,然后点击 "添加"。

打开 Default.aspx 的 "源" 视图,删除所有默认内容,然后添加以下代码:

asp.net个人网页代码
(图片来源网络,侵删)
<%@ Page Title="首页" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="MyPersonalWebSite._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <div class="jumbotron">
        <h1>你好,世界!</h1>
        <p class="lead">欢迎来到我的个人网站,我是一名充满热情的开发者,专注于创造优秀的用户体验。</p>
        <p><a href="About.aspx" class="btn btn-primary btn-lg">了解更多 &raquo;</a></p>
    </div>
    <div class="row">
        <div class="col-md-4">
            <h2>关于我</h2>
            <p>
                这里可以写一段更详细的自我介绍,包括你的技能、兴趣和职业目标。
            </p>
            <p>
                <a class="btn btn-default" href="About.aspx">了解更多 &raquo;</a>
            </p>
        </div>
        <div class="col-md-4">
            <h2>最新博客</h2>
            <p>
                查看我最近的技术文章和思考。
            </p>
            <p>
                <a class="btn btn-default" href="Blog.aspx">阅读更多 &raquo;</a>
            </p>
        </div>
        <div class="col-md-4">
            <h2>联系方式</h2>
            <p>
                如果你有任何问题或合作意向,请随时与我联系。
            </p>
            <p>
                <a class="btn btn-default" href="Contact.aspx">发送邮件 &raquo;</a>
            </p>
        </div>
    </div>
</asp:Content>

说明:

  • <%@ Page ... %> 指令表明这是一个页面,并指定了它的标题和使用的母版页。
  • <asp:Content ...> 标签中的内容会被插入到母版页的 MainContent 占位符中。
  • 我们使用了 Bootstrap 的 jumbotron, row, col-md-4 等类来快速布局。

第四步:创建“关于我”页面 (About.aspx)

这个页面将展示更详细的个人信息。

  1. 右键点击项目 -> "添加" -> "新建项"。
  2. 选择 "Web 窗体",命名为 About.aspx,并选择 Site.master 作为母版页。
  3. About.aspx 中添加内容:
<%@ Page Title="关于我" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="About.aspx.cs" Inherits="MyPersonalWebSite.About" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%: Title %>.</h2>
    <h3>你好,我是张三。</h3>
    <p>
        我是一名拥有5年经验的 .NET 全栈开发工程师,我热爱编程,享受解决复杂问题带来的成就感。
    </p>
    <p>
        我的技术栈包括:
    </p>
    <ul>
        <li>后端: C#, ASP.NET, .NET Core, Entity Framework</li>
        <li>前端: HTML, CSS, JavaScript, jQuery, Bootstrap</li>
        <li>数据库: SQL Server, MySQL</li>
        <li>其他: Git, Docker, Azure</li>
    </ul>
</asp:Content>

第五步:创建“联系方式”页面 (Contact.aspx)

这个页面将包含一个简单的联系表单。

  1. 右键点击项目 -> "添加" -> "新建项"。
  2. 选择 "Web 窗体",命名为 Contact.aspx,并选择 Site.master 作为母版页。
  3. Contact.aspx 中添加内容:
<%@ Page Title="联系方式" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Contact.aspx.cs" Inherits="MyPersonalWebSite.Contact" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%: Title %>.</h2>
    <h3>你的联系表单。</h3>
    <address>
        北京市朝阳区<br />
        中国<br />
        <abbr title="电话">电话:</abbr>
        123.456.7890
    </address>
    <address>
        <strong>支持:</strong>   <a href="mailto:Support@example.com">Support@example.com</a><br />
        <strong>市场:</strong> <a href="mailto:Marketing@example.com">Marketing@example.com</a>
    </address>
    <hr />
    <h3>或者给我留言:</h3>
    <asp:Label ID="lblMessage" runat="server" Text="" ForeColor="Green"></asp:Label>
    <div class="form-group">
        <asp:Label ID="lblName" runat="server" Text="姓名:" AssociatedControlID="txtName"></asp:Label>
        <asp:TextBox ID="txtName" runat="server" CssClass="form-control"></asp:TextBox>
    </div>
    <div class="form-group">
        <asp:Label ID="lblEmail" runat="server" Text="邮箱:" AssociatedControlID="txtEmail"></asp:Label>
        <asp:TextBox ID="txtEmail" runat="server" TextMode="Email" CssClass="form-control"></asp:TextBox>
    </div>
    <div class="form-group">
        <asp:Label ID="lblBody" runat="server" Text="留言:" AssociatedControlID="txtBody"></asp:Label>
        <asp:TextBox ID="txtBody" runat="server" TextMode="MultiLine" Rows="5" CssClass="form-control"></asp:TextBox>
    </div>
    <asp:Button ID="btnSubmit" runat="server" Text="发送" OnClick="btnSubmit_Click" CssClass="btn btn-primary" />
</asp:Content>

为表单添加后台逻辑 (Contact.aspx.cs):

双击 Contact.aspx 页面上的 "发送" 按钮,Visual Studio 会自动生成 btnSubmit_Click 事件处理函数,在 Contact.aspx.cs 中添加以下代码:

using System;
using System.Net;
using System.Net.Mail;
using System.Web.UI;
namespace MyPersonalWebSite
{
    public partial class Contact : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            // 在实际项目中,这里应该进行数据验证
            if (string.IsNullOrEmpty(txtName.Text) || string.IsNullOrEmpty(txtEmail.Text) || string.IsNullOrEmpty(txtBody.Text))
            {
                lblMessage.Text = "请填写所有字段!";
                lblMessage.ForeColor = System.Drawing.Color.Red;
                return;
            }
            try
            {
                // --- 配置邮件发送 ---
                // 注意:这里需要你自己的邮箱和密码(或应用专用密码)
                // 对于Gmail等邮箱,需要开启“不太安全的应用的访问权限”或使用应用专用密码
                string fromEmail = "your_email@gmail.com"; // 你的发件邮箱
                string fromPassword = "your_app_password"; // 你的邮箱密码或应用专用密码
                string toEmail = "your_email@gmail.com"; // 你想接收邮件的邮箱
                var subject = $"来自 {txtName.Text} 的留言";
                var body = $"姓名: {txtName.Text}\n邮箱: {txtEmail.Text}\n\n留言内容:\n{txtBody.Text}";
                var smtpClient = new SmtpClient("smtp.gmail.com")
                {
                    Port = 587,
                    Credentials = new NetworkCredential(fromEmail, fromPassword),
                    EnableSsl = true,
                };
                using (var mailMessage = new MailMessage(fromEmail, toEmail, subject, body))
                {
                    smtpClient.Send(mailMessage);
                }
                lblMessage.Text = "留言已成功发送!";
                // 清空表单
                txtName.Text = "";
                txtEmail.Text = "";
                txtBody.Text = "";
            }
            catch (Exception ex)
            {
                lblMessage.Text = "发送失败,请稍后再试,错误信息: " + ex.Message;
                lblMessage.ForeColor = System.Drawing.Color.Red;
            }
        }
    }
}

注意: 发送邮件功能需要真实的 SMTP 服务器配置,上面的代码以 Gmail 为例,你需要替换成你自己的邮箱信息,并确保你的邮箱允许通过这种方式发送邮件。


第六步:创建“博客”页面 (Blog.aspx)

这个页面将展示你的博客文章列表,为了简单起见,我们使用一个静态列表来模拟数据。

  1. 右键点击项目 -> "添加" -> "新建项"。
  2. 选择 "Web 窗体",命名为 Blog.aspx,并选择 Site.master 作为母版页。
  3. Blog.aspx 中添加内容:
<%@ Page Title="博客" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Blog.aspx.cs" Inherits="MyPersonalWebSite.Blog" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%: Title %>.</h2>
    <p>这里是我最近发表的技术文章。</p>
    <asp:Repeater ID="rptBlogPosts" runat="server">
        <ItemTemplate>
            <div class="media">
                <div class="media-body">
                    <h4 class="media-heading"><a href="Post.aspx?id=<%# Eval("Id") %>"><%# Eval("Title") %></a></h4>
                    <p><%# Eval("Summary") %></p>
                    <small>发布于: <%# Eval("PublishDate") %></small>
                </div>
            </div>
            <hr />
        </ItemTemplate>
    </asp:Repeater>
</asp:Content>

为博客页面添加后台逻辑 (Blog.aspx.cs):

Blog.aspx.cs 中,我们将创建一个博客文章列表,并绑定到 Repeater 控件。

using System;
using System.Collections.Generic;
using System.Web.UI;
namespace MyPersonalWebSite
{
    public partial class Blog : Page
    {
        // 定义一个博客文章的简单模型
        public class BlogPost
        {
            public int Id { get; set; }
            public string Title { get; set; }
            public string Summary { get; set; }
            public DateTime PublishDate { get; set; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // 模拟从数据库获取博客文章
                List<BlogPost> posts = GetBlogPosts();
                // 将数据绑定到 Repeater 控件
                rptBlogPosts.DataSource = posts;
                rptBlogPosts.DataBind();
            }
        }
        private List<BlogPost> GetBlogPosts()
        {
            return new List<BlogPost>
            {
                new BlogPost { Id = 1, Title = "ASP.NET Web Forms 入门指南", Summary = "本文将带你了解 ASP.NET Web Forms 的基本概念和如何创建你的第一个页面。", PublishDate = new DateTime(2025, 10, 26) },
                new BlogPost { Id = 2, Title = "C# 中的异步编程详解", Summary = "深入探讨 C# 中的 async/await 关键字,以及如何使用它们来编写高效的异步代码。", PublishDate = new DateTime(2025, 10, 20) },
                new BlogPost { Id = 3, Title = "使用 Bootstrap 快速美化你的网站", Summary = "学习如何利用 Bootstrap 框架,轻松创建响应式和美观的网页布局。", PublishDate = new DateTime(2025, 10, 15) }
            };
        }
    }
}

第七步:创建博客文章详情页 (Post.aspx)

当用户点击博客列表中的标题时,会跳转到这个页面来显示文章的完整内容。

  1. 右键点击项目 -> "添加" -> "新建项"。
  2. 选择 "Web 窗体",命名为 Post.aspx,并选择 Site.master 作为母版页。
  3. Post.aspx 中添加内容:
<%@ Page Title="文章详情" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Post.aspx.cs" Inherits="MyPersonalWebSite.Post" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2 id="postTitle" runat="server"></h2>
    <small id="postDate" runat="server"></small>
    <hr />
    <div id="postContent" runat="server" class="blog-post-content">
        <!-- 文章内容将在这里动态显示 -->
    </div>
</asp:Content>

为文章详情页添加后台逻辑 (Post.aspx.cs):

我们需要根据 URL 中的 id 参数来找到对应的文章并显示。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI;
namespace MyPersonalWebSite
{
    public partial class Post : Page
    {
        // 复用 Blog 页面的 BlogPost 模型
        public class BlogPost
        {
            public int Id { get; set; }
            public string Title { get; set; }
            public string Summary { get; set; }
            public string Content { get; set; } // 添加内容属性
            public DateTime PublishDate { get; set; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                int postId;
                if (int.TryParse(Request.QueryString["id"], out postId))
                {
                    // 复用 GetBlogPosts 方法,但这次包含完整内容
                    List<BlogPost> allPosts = GetFullBlogPosts();
                    BlogPost post = allPosts.FirstOrDefault(p => p.Id == postId);
                    if (post != null)
                    {
                        postTitle.InnerText = post.Title;
                        postDate.InnerText = "发布于: " + post.PublishDate.ToString("yyyy-MM-dd");
                        postContent.InnerHtml = post.Content; // 使用 InnerHtml 来显示 HTML 内容
                    }
                    else
                    {
                        // 如果文章未找到,显示404信息
                        postTitle.InnerText = "文章未找到";
                        postContent.InnerText = "抱歉,您访问的文章不存在。";
                    }
                }
                else
                {
                    // 如果没有提供ID,重定向到博客列表页
                    Response.Redirect("Blog.aspx");
                }
            }
        }
        private List<BlogPost> GetFullBlogPosts()
        {
            return new List<BlogPost>
            {
                new BlogPost { 
                    Id = 1, 
                    Title = "ASP.NET Web Forms 入门指南", 
                    Summary = "本文将带你了解 ASP.NET Web Forms 的基本概念和如何创建你的第一个页面。",
                    Content = "<p>这是文章的完整内容...</p><p>你可以在这里使用 <strong>HTML</strong> 标签来格式化文本。</p><p>ASP.NET Web Forms 是一个强大的框架,它允许你使用事件驱动的编程模型来构建动态网站。</p>",
                    PublishDate = new DateTime(2025, 10, 26) 
                },
                new BlogPost { 
                    Id = 2, 
                    Title = "C# 中的异步编程详解", 
                    Summary = "深入探讨 C# 中的 async/await 关键字,以及如何使用它们来编写高效的异步代码。",
                    Content = "<p>这是另一篇文章的完整内容...</p><p>异步编程是现代应用程序开发中的一个核心概念...</p>",
                    PublishDate = new DateTime(2025, 10, 20) 
                }
                // 可以添加更多文章...
            };
        }
    }
}

总结与运行

你的个人网站基本框架已经完成!它包含了:

  • 响应式布局:使用 Bootstrap 实现。
  • 导航系统:通过母版页实现,所有页面共享。
  • 首页:展示网站概览。
  • 关于我:个人简介页面。
  • 联系方式:包含一个功能性的联系表单(需要配置邮件服务器)。
  • 博客系统:包含文章列表和详情页。

如何运行:

  1. 在 Visual Studio 中,按下 F5 键。
  2. 网站将在你的默认浏览器中启动。
  3. 尝试点击导航栏中的链接,在不同页面之间跳转。

进阶方向

当你掌握了这些基础后,可以探索以下方向来增强你的网站:

  1. 数据持久化:将博客文章、用户信息等从静态列表改为存储在数据库中(如 SQL Server LocalDB 或 Azure SQL Database),使用 Entity Framework 可以让你用 C# 代码轻松操作数据库。
  2. ASP.NET MVC:Web Forms 很适合快速开发,但 ASP.NET MVC 是一个更现代、更灵活的框架,它提供了更好的控制分离、测试性和对 RESTful API 的支持,这是目前的主流方向。
  3. ASP.NET Core:这是微软最新的跨平台框架,它结合了 MVC 和 Web Forms 的优点,并提供了更高的性能和更优化的开发体验,对于新项目,强烈推荐从 ASP.NET Core 开始。
  4. 部署:将你的网站部署到云服务器上,如 Azure、IIS 等,让其他人也能访问。

希望这份详细的教程能帮助你成功创建自己的 ASP.NET 个人网页!