表示層是系統「門面」。系統設計再優秀、代碼再漂亮、擴展性再高,用戶最終接觸的是表示層。優劣兩指標:美觀 (外觀設計漂亮) 與 易用 (良好用戶體驗)。設計涉及美工、用戶心理等非技術因素,本文聚焦技術實現角度。
圍繞「管理員登錄」逐步實現。
建立 Login.aspx,代碼僅含頁面結構,無外觀代碼。引用兩外部 CSS:Common.css (全局通用)、Login.aspx.css (頁面專用)。提倡:aspx 只存結構,專門資料夾 (Styles) 放 CSS,每頁配套同名 CSS,結構與表現分離。類似「標準化網頁設計」(DIV+CSS),但不那麼嚴格,適當處用 Table 佈局。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %>
<!DOCTYPE html ...>
<html xmlns="https://www.w3.org/1999/xhtml">
<head runat="server">
<title>NGuestBook-管理員登錄</title>
<link href="Styles/Common.css" rel="stylesheet" type="text/css" />
<link href="Styles/Login.aspx.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div id="container">
<div id="box">
<h1>NGuestBook管理員登錄</h1>
<table id="forms" ...> ... </table>
<div id="buttons">
<asp:Button ID="Submit" ... OnClick="Submit_Click" />
<asp:Button ID="Cancel" ... OnClick="Cancel_Click" />
</div>
</div>
</div>
</form>
</body>
</html>
* { margin:0; padding:0; }
h1,h2,h3,h4,h5,h6 { font-size:12px; }
#container { width:100%; }
#box { width:40%; margin:200px auto; border:3px solid #036; }
h1 { margin:1px; padding:5px 0; font-size:14px; color:#FFF; background:#036; text-align:center; }
#forms { margin:20px auto; font-size:12px; color:#036; }
#forms input { margin:10px; border:0; border-bottom:1px solid #036; width:160px; }
#buttons { margin-bottom:20px; text-align:center; }
#buttons input { margin:0 10px; }
邏輯:依用戶名密碼檢查是否系統管理員 (定義於 Web.config,唯一,可增刪改普通管理員) → 是則 Session 存資訊、導向後台管理頁;否則檢查普通管理員 (調用 BLL) → 是則 Session 存資訊、導向主頁;否則顯示失敗提示。後台頁與主頁需 Session 檢查控制權限 (如顯示修改/刪除按鈕)。
<add key="AdministartorName" value="admin"/>
<add key="AdministartorPassword" value="123456"/>
Web.config 一般不允許請求,密碼相對安全。
public partial class Login : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) { }
protected void Cancel_Click(object sender, EventArgs e) {
this.Name.Text = ""; this.Password.Text = "";
}
protected void Submit_Click(object sender, EventArgs e) {
string administratorName = ConfigurationManager.AppSettings["AdministartorName"];
string administratorPassword = ConfigurationManager.AppSettings["AdministartorPassword"];
// 系統管理員
if (this.Name.Text == administratorName && this.Password.Text == administratorPassword) {
Session["Administrator"] = "Administrator";
Response.Redirect("~/Manage.aspx"); return;
}
// 普通管理員
AdminInfo admin = BLLFactory.CreateAdminBLL().Login(this.Name.Text, this.Password.Text);
if (admin != null) {
Session["Admin"] = admin;
Response.Redirect("~/Default.aspx");
} else {
Response.Redirect("~/Error.aspx?errMsg=登錄失敗");
}
}
}