`
黄继华
  • 浏览: 45094 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

可以通过基类实现的几种功能。vs2008 .net 2.0

 
阅读更多

这里只说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
有了列表页面的基类,对应的也要有表单页面的基类,对!这个就是。在这里要定义DataIDKindDataID是记录从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 了。

当然这里只是举一个例子,并不是说前台验证就一定要用这种方法,抛砖引玉吧。


基类都准备好了,下面就可以作业面了,根据不同的情况,继承不同的基类,如果基类不够的话,还可以根据情况来决定是否需要在增加。

下面是代码

publicclassBasePagePower:System.Web.UI.Page
{
/**////<summary>
///在基类里面定义数据访问的实例,一个用户,一次访问,只使用一个实例
///</summary>

publicDataAccessHelpdal=newDataAccessHelp();

/**////<summary>
///记录登陆人员的信息,您可以换成其他的方式来保存
///</summary>

publicstring[]EmpInfo;

初始化在Page_Load之间执行#region初始化在Page_Load之间执行
protectedoverridevoidOnInit(EventArgse)
{
base.OnInit(e);

//验证是否已经登陆

//如果已经登陆了,加载登陆人员的信息,
//这里使用数组,您也可以使用其他的您习惯的方式。
EmpInfo=newstring[6];
EmpInfo[
0]="";
//加载代码略

//清除IE缓存
Response.Cache.SetNoStore();
}

#endregion


销毁数据访问层的实例。#region销毁数据访问层的实例。
overrideprotectedvoidOnUnload(EventArgse)
{
if(dal!=null)
dal.Dispose();

base.OnUnload(e);
}

#endregion


}


publicclassBasePage:BasePagePower
{
/**////<summary>
///接收URL传递过来的模块ID,大部分页面都需要使用这个ID
///</summary>

publicstringFunctionID="";

/**////<summary>
///部门ID。不是所有的情况都会传递
///</summary>

publicstringDepartmentID="-3";

初始化在Page_Load之间执行#region初始化在Page_Load之间执行
protectedoverridevoidOnInit(EventArgse)
{
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验证权限实现的代码
publicvoidCheckPower()
{
//判断是否有权限访问该网页,验证方法略
}

#endregion


}

publicclassBasePageList:BasePage
{
//相关的操作
}

publicclassBasePageForm:BasePage
{
/**////<summary>
///接收URL传递过来的记录ID,用于显示、修改数据
///</summary>

publicstringDataID;

/**////<summary>
///接收URL传递过来的操作方式。
///1:添加、2:修改、3:显示数据
///</summary>

publicstringKind;

publicButtonBtn_Save;//保存按钮
publicButtonBtn_Save2;

初始化在Page_Load之间执行#region初始化在Page_Load之间执行
overrideprotectedvoidOnInit(EventArgse)
{
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","returnmyCheck()");
Btn_Save.Text
="基类里面设置Btn_Save";

if(Btn_Save2!=null)
Btn_Save2.Text
="基类里面设置Btn_Save2";

}

#endregion



}





0
0
0
(请您对文章做出评价)
分享到:
评论

相关推荐

    深度挖掘.NET Framework 2.0系列课程(2)ASP.NET 2.0中的异步页面

    1. `AsyncPage`类:ASP.NET 2.0提供了一个名为`AsyncPage`的基类,它是从`System.Web.UI.Page`派生的。开发人员可以创建继承自`AsyncPage`的自定义页面类,以便实现异步处理。 2. `BeginProcessRequest`和`...

    道不远人:深入解析ASP.NET 2.0控件开发

    例如,ASP.NET 2.0支持几种身份验证模式,如窗体身份验证、基本身份验证和Windows身份验证,每种都有其适用场景。 综上所述,“道不远人:深入解析ASP.NET 2.0控件开发”这个主题涵盖了ASP.NET 2.0的核心特性和控件...

    [Microsoft.net.2.0.Framework.专业程序员指南].WROX-Professional_Web_Parts_and_Custom_Controls_with_ASP_dot_NET.2.0.pdf

    在ASP.NET 2.0中,自定义控件可以通过继承`System.Web.UI.Control`类来创建,这使得开发者能够充分利用.NET Framework的强大功能,实现高级功能。 - **继承与扩展**:通过继承现有的控件基类,可以轻松地扩展控件的...

    Asp.net2.0页面指令

    本文将详细介绍几种常用的页面指令及其用法。 #### @Page @Page指令用于设置ASP.NET Web页面的行为属性。它仅出现在.aspx文件中。下面是一些常见的属性: - **AutoEventWireup**:指示是否自动为事件进行布线(默认...

    MVC2.0入门必读教程程序源码

    安装完ASP.NET MVC后,在VS里新建一个项目,可以看到有一个“ASP.NET MVC Web Application”的选项,选择它,新建一个项目,并命名为“MVCDemo”。 建完项目后,可以看到默认情况下已经建立了很多文件夹,这里简略...

    Asp.net实现多语言Demo.rar

    我实现多语言是利用了ASP.NET2.0的资源文件,其实据我所知除了资源文件的方式,在数据库里面建多个表中进行一个区域文化映射,也是解决国际化的一种方式(关于这种方式感兴趣的朋友可以自己试试) 现在我把实现国际化...

    ASP.NET 导航控件

    5. 支持Ajax:通过整合ASP.NET AJAX库,可以实现无刷新的导航,提升用户体验。 在"A149]ASP.NET 导航控件.exe"这个文件中,很可能包含了一个教学视频和相关的源代码示例,旨在帮助学习者深入了解如何在实际项目中...

    ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录 <font color=red>原创</font>

    ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录是一个常见的功能需求,特别是在构建社交网络应用或者需要用户通过已有社交账号快速注册登录的网站时。OAuth2.0是一种授权框架,允许第三方应用在用户授权的情况下...

    net framework 2.0 sp1 的几个dll文件

    在C#编程中,这些DLL文件是开发者经常打交道的库,通过引用这些库,开发者可以轻松地实现数据访问、图形绘制、UI设计以及XML处理等功能。在.NET Framework 2.0 SP1中,这些库经过了优化,提供了更好的性能和稳定性,...

    国际化语言

    我实现多语言是利用了ASP.NET2.0的资源文件,其实据我所知除了资源文件的方式,在数据库里面建多个表中进行一个区域文化映射,也是解决国际化的一种方式(关于这种方式感兴趣的朋友可以自己试试) 现在我把实现国际化用到...

    2009.net经典面试题集

    11. **.NET框架版本更新**:对比分析.NET 2.0、3.0、3.5、4.0等不同版本的新增功能和改进。 12. **性能优化**:代码优化技巧,如减少内存分配、提高算法效率、使用适当的数据结构等。 13. **安全性**:角色型权限...

    亮剑.NET深入体验与实战精要2

    8.2.1 安装ASP.NET 2.0 Ajax Extensions 333 8.2.2 创建ASP.NET Ajax应用程序 333 8.2.3 ScriptManager控件使用技巧 335 8.2.4 UpdaetPanel控件使用技巧 336 8.2.5 AsyncPostBackTrigger实现 外部控件引发局部刷新...

    亮剑.NET深入体验与实战精要3

    8.2.1 安装ASP.NET 2.0 Ajax Extensions 333 8.2.2 创建ASP.NET Ajax应用程序 333 8.2.3 ScriptManager控件使用技巧 335 8.2.4 UpdaetPanel控件使用技巧 336 8.2.5 AsyncPostBackTrigger实现 外部控件引发局部刷新...

    ASP.NET中的集合对象

    ASP.NET是微软开发的一种用于构建Web应用程序的框架,它提供了丰富的功能和工具,使得开发者能够高效地构建动态网站和Web应用程序。在这个主题中,我们将深入探讨ASP.NET中的集合对象,这是编程过程中非常基础且重要...

    C# IrisSkin2.0(dll和皮肤文件)

    IrisSkin 2.0的核心功能在于提供了一种简单的方法来改变Winform控件的外观,使应用程序看起来更加现代化和专业。它不仅支持基本的控件如按钮、文本框、复选框等,还能够处理复杂的控件布局和自定义控件。通过引入dll...

    你必须知道的.NET第2版

    它分为*** Web Forms、*** MVC(模型-视图-控制器)、*** Web Pages和*** Core几种不同的架构风格。 以上知识点仅是.NET技术栈的一个大致概览,实际上,每一点都包含大量的细节和高级特性。开发者在深入学习.NET...

    c# 自然框架源码 框架源码

     还可以实现权限设置、导出数据、个性化设置等功能。 元数据和中间件 常用函数库、数据访问函数库、自定义控件、在线用户、页面基类模块、角色管理模块组成。还有几个第三方控件,比如My97日期控件、FCKEditor等 ...

    C#泛型详解

    C#泛型是一种编程特性,它允许在定义类、接口和方法时使用类型参数,从而创建可以在多种数据类型上工作的通用代码。这种技术在C# 2.0版本中引入,提高了代码的类型安全性和效率。 泛型的核心概念是类型参数化,这...

Global site tag (gtag.js) - Google Analytics