可以通过基类实现的几种功能。vs2008 .net 2.0
2009-12-14 19:11
447 查看
这里只说UI部分,先看一个类的图。(我也不知道应该叫做什么图)
(TestList 、TestForm是网页.aspx ,上面的都是类 .cs )
一般的软件(比如OA、CRM等)都是需要先登录,需要有一定的权限才能够访问,那么每个页面都需要验证一下是否已经登陆了,或者登录是否超时,以及是否有访问页面的权限,在具特点就是有没有添加、修改、删除,有没有编辑某一条记录的权限,这些操作都是可以放在基类里面的。
BasePagePower (.cs文件) 继承System.Web.UI.Page
验证是否登录、登录是否超时,加载登陆人员的信息(ID,姓名,部门等),生成数据访问函数库的实例,然后在OnUnload事件里销毁实例。这样其他页面只要继承了这个类,就不用去想如何验证登录信息,如何获取登录人的姓名这一类的事情了。至于数据访问函数库的实例嘛,估计这个会有很大的争议,在这里实例化的目的是,一个人、访问一次页面,只生成一个实例。这样可以提高这个实例的利用率,因为我感觉数据访问函数库的“体积”有点大,生成一回,如果只做了一件事情(执行一个函数),那是不是太可惜了呢。另外在基类里面实例化以后,在继承的页面里调用的时候就和使用静态函数很像了,也不用考虑什么时候销毁对象,因为这个也在基类里面实现了。
BasePage (.cs文件) 继承 BasePagePower
在这里主要是处理URL传递过来的模块ID,验证一下这个参数是否正确(是不是数字),不是的话作出处理。还可以处理其它的参数,比如部门ID等,这个根据大家的情况灵活设置吧。在我的项目里,大部分页面都需要使用这个ID,可以用这个参数做很多的事情,比如验证是否有访问该页面的权限,加载控件的属性等。
BasePageList (.cs文件) 继承BasePage
您可能会问了,有了上面的两个类就已经够用了,为什么还有哇,上面那两个也是应该合在一起的呀?因为我会在列表页面使用几个自己写的控件:分页控件、查询控件、显示数据的控件,对于这几个控件的属性设置可以放在这个基类里面来处理,这样表单页面就可以简单不少。
BasePageForm (.cs文件) 继承 BasePage
有了列表页面的基类,对应的也要有表单页面的基类,对!这个就是。在这里要定义DataID和Kind。DataID是记录从URL传递过来的记录ID ,主要用来修改数据和显示数据用;而Kind也是从URL传递过来的,表示要添加、修改还是显示数据。当然在这里不仅要接收,同时也要验证一下参数是否正确,以避免注入攻击。
控件的继承。表单嘛,都会有一个“保存”按钮吧,如果想要在提交数据之前,先在IE里做一下验证的,我的做法是给按钮加一个js的onclick 事件,而这个操作就很烦,每一个表单都要加一遍。现在可以在表单的基类里面定义一个按钮,然后在
OnInit 事件里加上这个js 事件就可以了。
public class BasePageForm : BasePage
{
public Button Btn_Save; //保存按钮
override protected void OnInit(EventArgs e)
{
base.OnInit(e);
Btn_Save.Attributes.Add("onclick", "return myCheck()");
Btn_Save.Text = "基类里面设置Btn_Save";
}
}
这样就可以了,表单页面继承之后,拖拽一个按钮,ID设置成 Btn_Save 就 ok 了。
当然这里只是举一个例子,并不是说前台验证就一定要用这种方法,抛砖引玉吧。
基类都准备好了,下面就可以作业面了,根据不同的情况,继承不同的基类,如果基类不够的话,还可以根据情况来决定是否需要在增加。
下面是代码
public class BasePagePower : System.Web.UI.Page
{
/**//// <summary>
/// 在基类里面定义数据访问的实例,一个用户,一次访问,只使用一个实例
/// </summary>
public DataAccessHelp dal = new DataAccessHelp();
/**//// <summary>
/// 记录登陆人员的信息,您可以换成其他的方式来保存
/// </summary>
public string[] EmpInfo;
初始化 在Page_Load之间执行#region 初始化 在Page_Load之间执行
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//验证是否已经登陆
//如果已经登陆了,加载登陆人员的信息,
//这里使用数组,您也可以使用其他的您习惯的方式。
EmpInfo = new string[6];
EmpInfo[0] = "" ;
//加载代码略
//清除IE缓存
Response.Cache.SetNoStore();
}
#endregion
销毁数据访问层的实例 。#region 销毁数据访问层的实例 。
override protected void OnUnload(EventArgs e)
{
if (dal != null)
dal.Dispose();
base.OnUnload(e);
}
#endregion
}
public class BasePage : BasePagePower
{
/**//// <summary>
/// 接收URL传递过来的模块ID,大部分页面都需要使用这个ID
/// </summary>
public string FunctionID = "";
/**//// <summary>
/// 部门ID。不是所有的情况都会传递
/// </summary>
public string DepartmentID = "-3";
初始化 在Page_Load之间执行#region 初始化 在Page_Load之间执行
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.FunctionID = Request.QueryString["fid"];
验证模块参数是否是数字。#region 验证模块参数是否是数字。
if (!Functions.IsInt(this.FunctionID))
{
Response.Write("模块参数不正确!");
Response.End();
}
#endregion
DepartmentID = Request.QueryString["did"];
if (!Functions.IsInt(DepartmentID))
{
//没有传递,设置默认值
DepartmentID = "-3";
}
//验证是否有权限访问该网页
CheckPower();
}
#endregion
验证权限 实现的代码#region 验证权限 实现的代码
public void CheckPower()
{
//判断是否有权限访问该网页,验证方法略
}
#endregion
}
public class BasePageList : BasePage
{
//相关的操作
}
public class BasePageForm : BasePage
{
/**//// <summary>
/// 接收URL传递过来的记录ID,用于显示、修改数据
/// </summary>
public string DataID;
/**//// <summary>
/// 接收URL传递过来的操作方式。
/// 1:添加、2:修改、3:显示数据
/// </summary>
public string Kind;
public Button Btn_Save; //保存按钮
public Button Btn_Save2;
初始化 在Page_Load之间执行#region 初始化 在Page_Load之间执行
override protected void OnInit(EventArgs e)
{
base.OnInit(e);
this.DataID = Request.QueryString["id"]; //接收记录ID
this.Kind = Request.QueryString["k"]; //接收操作方式
验证模块参数是否是数字。#region 验证模块参数是否是数字。
if (!Functions.IsInt(this.DataID))
{
Response.Write("记录ID不正确!");
Response.End();
}
#endregion
Btn_Save.Attributes.Add("onclick", "return myCheck()");
Btn_Save.Text = "基类里面设置Btn_Save";
if (Btn_Save2 != null)
Btn_Save2.Text = "基类里面设置Btn_Save2";
}
#endregion
}
Tag标签: 基类,权限验证,控件继承
0
0
0
(请您对文章做出评价)
(TestList 、TestForm是网页.aspx ,上面的都是类 .cs )
一般的软件(比如OA、CRM等)都是需要先登录,需要有一定的权限才能够访问,那么每个页面都需要验证一下是否已经登陆了,或者登录是否超时,以及是否有访问页面的权限,在具特点就是有没有添加、修改、删除,有没有编辑某一条记录的权限,这些操作都是可以放在基类里面的。
BasePagePower (.cs文件) 继承System.Web.UI.Page
验证是否登录、登录是否超时,加载登陆人员的信息(ID,姓名,部门等),生成数据访问函数库的实例,然后在OnUnload事件里销毁实例。这样其他页面只要继承了这个类,就不用去想如何验证登录信息,如何获取登录人的姓名这一类的事情了。至于数据访问函数库的实例嘛,估计这个会有很大的争议,在这里实例化的目的是,一个人、访问一次页面,只生成一个实例。这样可以提高这个实例的利用率,因为我感觉数据访问函数库的“体积”有点大,生成一回,如果只做了一件事情(执行一个函数),那是不是太可惜了呢。另外在基类里面实例化以后,在继承的页面里调用的时候就和使用静态函数很像了,也不用考虑什么时候销毁对象,因为这个也在基类里面实现了。
BasePage (.cs文件) 继承 BasePagePower
在这里主要是处理URL传递过来的模块ID,验证一下这个参数是否正确(是不是数字),不是的话作出处理。还可以处理其它的参数,比如部门ID等,这个根据大家的情况灵活设置吧。在我的项目里,大部分页面都需要使用这个ID,可以用这个参数做很多的事情,比如验证是否有访问该页面的权限,加载控件的属性等。
BasePageList (.cs文件) 继承BasePage
您可能会问了,有了上面的两个类就已经够用了,为什么还有哇,上面那两个也是应该合在一起的呀?因为我会在列表页面使用几个自己写的控件:分页控件、查询控件、显示数据的控件,对于这几个控件的属性设置可以放在这个基类里面来处理,这样表单页面就可以简单不少。
BasePageForm (.cs文件) 继承 BasePage
有了列表页面的基类,对应的也要有表单页面的基类,对!这个就是。在这里要定义DataID和Kind。DataID是记录从URL传递过来的记录ID ,主要用来修改数据和显示数据用;而Kind也是从URL传递过来的,表示要添加、修改还是显示数据。当然在这里不仅要接收,同时也要验证一下参数是否正确,以避免注入攻击。
控件的继承。表单嘛,都会有一个“保存”按钮吧,如果想要在提交数据之前,先在IE里做一下验证的,我的做法是给按钮加一个js的onclick 事件,而这个操作就很烦,每一个表单都要加一遍。现在可以在表单的基类里面定义一个按钮,然后在
OnInit 事件里加上这个js 事件就可以了。
public class BasePageForm : BasePage
{
public Button Btn_Save; //保存按钮
override protected void OnInit(EventArgs e)
{
base.OnInit(e);
Btn_Save.Attributes.Add("onclick", "return myCheck()");
Btn_Save.Text = "基类里面设置Btn_Save";
}
}
这样就可以了,表单页面继承之后,拖拽一个按钮,ID设置成 Btn_Save 就 ok 了。
当然这里只是举一个例子,并不是说前台验证就一定要用这种方法,抛砖引玉吧。
基类都准备好了,下面就可以作业面了,根据不同的情况,继承不同的基类,如果基类不够的话,还可以根据情况来决定是否需要在增加。
下面是代码
public class BasePagePower : System.Web.UI.Page
{
/**//// <summary>
/// 在基类里面定义数据访问的实例,一个用户,一次访问,只使用一个实例
/// </summary>
public DataAccessHelp dal = new DataAccessHelp();
/**//// <summary>
/// 记录登陆人员的信息,您可以换成其他的方式来保存
/// </summary>
public string[] EmpInfo;
初始化 在Page_Load之间执行#region 初始化 在Page_Load之间执行
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
//验证是否已经登陆
//如果已经登陆了,加载登陆人员的信息,
//这里使用数组,您也可以使用其他的您习惯的方式。
EmpInfo = new string[6];
EmpInfo[0] = "" ;
//加载代码略
//清除IE缓存
Response.Cache.SetNoStore();
}
#endregion
销毁数据访问层的实例 。#region 销毁数据访问层的实例 。
override protected void OnUnload(EventArgs e)
{
if (dal != null)
dal.Dispose();
base.OnUnload(e);
}
#endregion
}
public class BasePage : BasePagePower
{
/**//// <summary>
/// 接收URL传递过来的模块ID,大部分页面都需要使用这个ID
/// </summary>
public string FunctionID = "";
/**//// <summary>
/// 部门ID。不是所有的情况都会传递
/// </summary>
public string DepartmentID = "-3";
初始化 在Page_Load之间执行#region 初始化 在Page_Load之间执行
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
this.FunctionID = Request.QueryString["fid"];
验证模块参数是否是数字。#region 验证模块参数是否是数字。
if (!Functions.IsInt(this.FunctionID))
{
Response.Write("模块参数不正确!");
Response.End();
}
#endregion
DepartmentID = Request.QueryString["did"];
if (!Functions.IsInt(DepartmentID))
{
//没有传递,设置默认值
DepartmentID = "-3";
}
//验证是否有权限访问该网页
CheckPower();
}
#endregion
验证权限 实现的代码#region 验证权限 实现的代码
public void CheckPower()
{
//判断是否有权限访问该网页,验证方法略
}
#endregion
}
public class BasePageList : BasePage
{
//相关的操作
}
public class BasePageForm : BasePage
{
/**//// <summary>
/// 接收URL传递过来的记录ID,用于显示、修改数据
/// </summary>
public string DataID;
/**//// <summary>
/// 接收URL传递过来的操作方式。
/// 1:添加、2:修改、3:显示数据
/// </summary>
public string Kind;
public Button Btn_Save; //保存按钮
public Button Btn_Save2;
初始化 在Page_Load之间执行#region 初始化 在Page_Load之间执行
override protected void OnInit(EventArgs e)
{
base.OnInit(e);
this.DataID = Request.QueryString["id"]; //接收记录ID
this.Kind = Request.QueryString["k"]; //接收操作方式
验证模块参数是否是数字。#region 验证模块参数是否是数字。
if (!Functions.IsInt(this.DataID))
{
Response.Write("记录ID不正确!");
Response.End();
}
#endregion
Btn_Save.Attributes.Add("onclick", "return myCheck()");
Btn_Save.Text = "基类里面设置Btn_Save";
if (Btn_Save2 != null)
Btn_Save2.Text = "基类里面设置Btn_Save2";
}
#endregion
}
Tag标签: 基类,权限验证,控件继承
0
0
0
(请您对文章做出评价)
相关文章推荐
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- CCRenderTexture(动态创建纹理类 ---通过OpenGL方法 可以实现截屏功能)
- 通过CSS切换图片效果,点击这个图片可以实现连接功能,这里的图片在一张大图片中,每个并要切换的图片没有切换,通过disposition定位的方式做
- 在页面中,我们经常看到,一个button按钮,如果属标点击,就会触发一个窗口的显示,如果二次点击并可以隐藏,那么如何通过JAVA配合html来实现这一功能呢?
- 分享一下我写的.net 2.0的orm类,实现mvc。可以用于webform等环境中,这是orm的原理部分。
- 可以实现zigbee的通过app控制入网退网,情景模式,联动,定时,延时功能了!
- 使用.net 2.0(c#)来实现一般的FTP功能
- 通过.NET实现后台自动发送Email功能的代码示例
- Quartz.NET 2.0 学习笔记(3) :通过配置文件实现任务调度
- 通过.NET实现后台自动发送Email功能的代码示例
- android canvas中translate函数的使用,可以通过translate函数来实现滚动的功能
- .net 2.0 C#实现压缩/解压功能实现
- 通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽
- 学生社团管理系统 任务:通过此系统可以实现如下功能(包含但不限于以下功能,可自行设计): 1、社团信息包括:社团编号、社团名称、成立时间…… 2、学生信息包括:学号、姓名、性别、年级、专业…… 3
- 通过WifiManager可以实现对wifi进行操作,实现wifi自动连接等一些功能
- 学习.NET (8) 实现派生类中Deep Copy的几种常用方法(通过ICloneable接口)
- MVC使用ASP.NET Identity 2.0实现用户身份安全相关功能,比如通过短信或邮件发送安全码,账户锁定等
- 邮件发送.net 的实现 vs2008 可以加附件