上一篇提到框架的决定,可以从用户的角色的确定与系统整体展现布局入手。也就是说,系统的规划需要划分公共的基本要素与针对用户角色所设的特定功能。以第一篇中布局展现设计图为例(http://www.cnblogs.com/lintree/archive/2008/01/23/1050740.html ),图中登陆管理区、页面导航区、主功能操作区(按钮)等页面功能都可以称作系统的基本要素;而主功能操作区中各个功能模块,如针对客户经理角色的“金卡客户服务”、“金卡客服统计”、“个人工作助理”等就称为系统的特定功能。
我们先要把系统的基本要素先行铺垫好了,进行系统的特定功能模块设计时才可以把用户角色控制权限等加进去,笔者很强调一步到位——懒人也~哈哈。按照这种理念(该系统的开发的都是贯彻该精神的,以后就不多赘述了 ^_^ ),系统实际编写时迈出的第一步无疑就是把登陆页面与母板页设计好。使用母板页的好处就不多说,举个实用的例子——如何隐藏系统状态栏中的链接地址?最简单的方法就是在母板页中加入 JavaScript 。
1
<%
@ Master Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
MainPage.master.cs
"
Inherits
=
"
MainPage
"
%>
2 <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
3 < html xmlns = " http://www.w3.org/1999/xhtml " >
4 < head id = " Head1 " runat = " server " >
5 < title > VIP客户关系管理系统 </ title >
6 < script type = " text/javascript " >
7 kstatus();
8 function kstatus() // 隐藏状态栏中的链接地址
9 {
10 self.status = " VIP CRM SYSTEM - Produced by LinTeng " ;
11 setTimeout( " kstatus() " , 0 );
12 }
13 </ script >
14 </ head >
15
注意,尽可能的将基本要素都放到母板页中。如果系统中一个母板页不足以展现你页面布局的才华或者功能页面放在子文件夹中而影响了母板页基本要素的某些功能的使用,那就多加几个母板页吧!反正都是
Copy
然后修改一下而已。仍以第一篇中两图为例,登陆页使用的母板页是
MasterPage.master
,登陆后的主页使用了
MainPage.master
,布局展现设计图使用了
SubMainPage.master
。
2 <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
3 < html xmlns = " http://www.w3.org/1999/xhtml " >
4 < head id = " Head1 " runat = " server " >
5 < title > VIP客户关系管理系统 </ title >
6 < script type = " text/javascript " >
7 kstatus();
8 function kstatus() // 隐藏状态栏中的链接地址
9 {
10 self.status = " VIP CRM SYSTEM - Produced by LinTeng " ;
11 setTimeout( " kstatus() " , 0 );
12 }
13 </ script >
14 </ head >
15
![](https://i-blog.csdnimg.cn/blog_migrate/02479990e21f46b09c9d17b28fc8d710.jpeg)
因为笔者是懒人,所以用户管理的选择自然会首先考虑ASP.NET 2.0提供的那套简易解决方案,拖几个控件,轻易就实现了用户登陆及角色权限的管理。但是,问题是如果你的用户数量较多又涉及层级管理,如:经办员(中心)可以查看所管辖的客户经理(支行)的系统客服资料等。这种情况怎么办?还能怎么办,不是弃之就是改之。一是放弃该套方案,自己重新建立用户登陆权限与管理。二是想办法通过简单修改用户表,规划出权限控制图。建议看实际情况,均衡利弊,择优选择。笔者选择了后者,大体的思路如下:在用户表中增加“支行号”与“卡中心用户号”(如下图),然后对需要层级权限控制的数据表中都加入“支行号”与“卡中心用户号”来控制。
![](https://i-blog.csdnimg.cn/blog_migrate/55dc0c4884dd8b1660fa8969f2eda80d.jpeg)
明天还得上班,今天就先到这吧,下期我们将重点探究 ASP.NET 提供的这套解决方案,敬请留意!