表示层的设计牵扯到很多非技术性问题,如美工、用户接受度、操作度等问题,但是在这篇文章中,将不会涉及这些问题!这些内容和本系列文章的关系不是很密切。这里将主要从如何调用我们的逻辑层的角度讨论表示层的设计。
一般来说,表示层的职责有以下两点:
1.接受用户的输入。
2.向用户呈现信息。
总体来说,就是与用户的交互。我们就以这2个方面来进行设计,下面看看代码实现:
Default.aspx:

Code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_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">
<asp:Button ID="Button1" runat="server" Text="随机新增用户记录" onclick="Button1_Click" />
<br />
<asp:Button ID="Button2" runat="server" Text="获取用户记录列表" onclick="Button2_Click" />
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button3" runat="server" Text="根据ID获取指定用户记录信息" onclick="Button3_Click" />
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Button ID="Button4" runat="server" Text="根据姓名获取指定用户记录信息" onclick="Button4_Click" />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<hr />
<asp:Button ID="Button5" runat="server" Text="随机新增部门记录" onclick="Button5_Click" />
<br />
<asp:Button ID="Button6" runat="server" Text="获取部门记录列表" onclick="Button6_Click" />
<br />
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Button ID="Button7" runat="server" Text="根据ID获取指定部门记录信息" onclick="Button7_Click" />
<br />
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
<asp:Button ID="Button8" runat="server" Text="根据姓名获取指定部门记录信息" onclick="Button8_Click" />
<asp:GridView ID="GridView2" runat="server">
</asp:GridView>
<hr />
部门<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox><asp:Button ID="Button9" runat="server" Text="根据ID获取指定部门的用户记录信息" onclick="Button9_Click" />
<br />
用户<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button10" runat="server" Text="加用户指定部门" onclick="Button10_Click" />
<asp:GridView ID="GridView3" runat="server">
</asp:GridView>
</form>
</body>
</html>

Default.aspx.cs

Code
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using MWC.Entity;
using MWC.BusinessLogic;

public partial class _Default : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)

{
}
protected void Button1_Click(object sender, EventArgs e)

{
//随机新增用户记录
MWC.Entity.User ua = new MWC.Entity.User();
Random rnd = new Random(DateTime.Now.Millisecond);

ua.UserID = Guid.NewGuid();
ua.UserName = "User" + rnd.Next(1,100);

MWC.BusinessLogic.User ub = new MWC.BusinessLogic.User();

ub.Add(ua);
}
protected void Button2_Click(object sender, EventArgs e)

{
//获取用户记录列表
MWC.BusinessLogic.User ub = new MWC.BusinessLogic.User();

GridView1.DataSource = ub.List();
GridView1.DataBind();
}
protected void Button3_Click(object sender, EventArgs e)

{
//根据ID获取指定用户记录信息
MWC.BusinessLogic.User ub = new MWC.BusinessLogic.User();

Guid userID = new Guid(TextBox1.Text);

GridView1.DataSource = ub.Info(userID);
GridView1.DataBind();
}
protected void Button4_Click(object sender, EventArgs e)

{
//根据姓名获取指定用户记录信息
MWC.BusinessLogic.User ub = new MWC.BusinessLogic.User();

GridView1.DataSource = ub.Info(TextBox2.Text);
GridView1.DataBind();
}
protected void Button5_Click(object sender, EventArgs e)

{
//随机新增部门记录
MWC.Entity.Group ga = new MWC.Entity.Group();

Random rnd = new Random(DateTime.Now.Millisecond);

ga.GroupID = Guid.NewGuid();
ga.GroupName = "Group" + rnd.Next(1, 100);

MWC.BusinessLogic.Group gb = new MWC.BusinessLogic.Group();

gb.Add(ga);
}
protected void Button6_Click(object sender, EventArgs e)

{
//获取部门记录列表
MWC.BusinessLogic.Group gb = new MWC.BusinessLogic.Group();

GridView2.DataSource = gb.List();
GridView2.DataBind();
}
protected void Button7_Click(object sender, EventArgs e)

{
//根据ID获取指定部门记录信息
MWC.BusinessLogic.Group gb = new MWC.BusinessLogic.Group();

Guid groupID = new Guid(TextBox3.Text);

GridView2.DataSource = gb.Info(groupID);
GridView2.DataBind();
}
protected void Button8_Click(object sender, EventArgs e)

{
//根据姓名获取指定部门记录信息
MWC.BusinessLogic.Group gb = new MWC.BusinessLogic.Group();

GridView2.DataSource = gb.Info(TextBox4.Text);
GridView2.DataBind();
}
protected void Button9_Click(object sender, EventArgs e)

{
//根据ID获取指定部门的用户记录信息
MWC.BusinessLogic.Group gb = new MWC.BusinessLogic.Group();

Guid groupID = new Guid(TextBox5.Text);

GridView3.DataSource = gb.UserList(groupID);
GridView3.DataBind();
}
protected void Button10_Click(object sender, EventArgs e)

{
//加用户指定部门
MWC.BusinessLogic.Group gb = new MWC.BusinessLogic.Group();
Guid groupID = new Guid(TextBox5.Text);
Guid userID = new Guid(TextBox6.Text);
gb.AddUser(groupID, userID);
}
}

注意:因为这是最终的客户端,在使用我们前面的各个模块前,需要将其加入到引用。即在WEB目录下会生成bin目录,下面会包含编译好的各模块的dll文件。系统发布时会用到这些文件。
至此,我们通过一系列的文章实验了多层多数据库的开发。欢迎大家同我进行交流学习!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端