在ASP.NET C# Web应用中使用ADO.NET和XML实现学生信息搜索
实现步骤
1. 存放XML文件
首先把你提供的XML内容保存为Graduates.xml,放到项目的App_Data目录下,这个目录默认不允许外部直接访问,安全性更高。
2. 编写前端页面(.aspx)
这里直接用独立的标签展示学生信息,你可以自由调整CSS样式做成毕业证书的排版:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GraduateSearch.aspx.cs" Inherits="YourNamespace.GraduateSearch" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>毕业证书查询</title> <style> /* 你可以自定义这里的样式做成毕业证书效果 */ .certificate { width: 800px; padding: 50px; border: 10px solid #d4af37; margin: 30px auto; background: #fffdf5; font-family: "宋体", serif; display: none; /* 默认隐藏,查到结果再显示 */ } .cert-title { font-size: 36px; text-align: center; font-weight: bold; margin-bottom: 40px; } .info-item { font-size: 20px; line-height: 2.5; margin: 10px 0; } .search-area { text-align: center; margin: 30px 0; } </style> </head> <body> <form id="form1" runat="server"> <div class="search-area"> <asp:TextBox ID="txtSearch" runat="server" placeholder="请输入学生姓名或ID" Width="300px" Height="30px" Font-Size="16px"></asp:TextBox> <asp:Button ID="btnSearch" runat="server" Text="查询" OnClick="btnSearch_Click" Height="35px" Font-Size="16px" /> <br /> <asp:Label ID="lblMsg" runat="server" ForeColor="Red"></asp:Label> </div> <!-- 毕业证书展示区域,所有字段独立展示,可自由调整排版 --> <div class="certificate" id="certificate" runat="server"> <div class="cert-title">毕业证书</div> <div class="info-item">学生姓名:<asp:Label ID="lblStudentName" runat="server"></asp:Label></div> <div class="info-item">学号:<asp:Label ID="lblID" runat="server"></asp:Label></div> <div class="info-item">所学专业:<asp:Label ID="lblProgramme" runat="server"></asp:Label></div> <div class="info-item">荣誉等级:<asp:Label ID="lblHonours" runat="server"></asp:Label></div> <div class="info-item">教材费用结清:<asp:Label ID="lblBookPrice" runat="server"></asp:Label></div> <!-- 你还可以在这里加更多内容,比如学校名称、日期、盖章位置等 --> </div> </form> </body> </html>
3. 编写后台查询逻辑(.aspx.cs)
用LINQ to XML查询XML内容,逻辑简单易懂,适合新手:
using System; using System.Linq; using System.Xml.Linq; namespace YourNamespace { public partial class GraduateSearch : System.Web.UI.Page { protected void btnSearch_Click(object sender, EventArgs e) { lblMsg.Text = ""; certificate.Style["display"] = "none"; // 校验输入不能为空 if (string.IsNullOrWhiteSpace(txtSearch.Text.Trim())) { lblMsg.Text = "请输入学生姓名或ID后查询"; return; } try { // 加载XML文件 string xmlPath = Server.MapPath("~/App_Data/Graduates.xml"); XDocument xDoc = XDocument.Load(xmlPath); // 查询匹配的学生:输入内容等于ID 或者 等于姓名,忽略前后空格 var student = xDoc.Descendants("Student") .FirstOrDefault(s => s.Element("ID").Value.Trim() == txtSearch.Text.Trim() || s.Element("Student_Name").Value.Trim() == txtSearch.Text.Trim()); if (student != null) { // 给各个字段赋值 lblID.Text = student.Element("ID").Value.Trim(); lblStudentName.Text = student.Element("Student_Name").Value.Trim(); lblHonours.Text = student.Element("Honours").Value.Trim(); lblBookPrice.Text = student.Element("Book_Price").Value.Trim(); lblProgramme.Text = student.Element("Programme").Value.Trim(); // 显示毕业证书区域 certificate.Style["display"] = "block"; } else { lblMsg.Text = "未找到匹配的学生信息,请检查输入的姓名或ID是否正确"; } } catch (Exception ex) { lblMsg.Text = "查询出错:" + ex.Message; } } } }
注意事项
- 把代码里的
YourNamespace改成你自己项目的命名空间即可正常运行 - 所有信息都是独立标签展示,你可以完全自由调整CSS样式、排版位置,实现你需要的毕业证书效果
- 如果需要支持模糊查询,把查询条件里的
==改成Contains()即可
内容的提问来源于stack exchange,提问作者Dreeam Deshi
相关产品推荐
相关产品推荐

