从零开始编写自己的C#框架(16)——Web层后端父类

本章节讲述的各个类是后端系统的核心之一,涉及到系统安全验证、操作日志记录、页面与按键权限控制、后端页面功能封装等内容,希望学习本系列的朋友认真查看新增的类与函数,这对以后使用本框架进行开发时非常重要。

 

  1、父类(基类)的实现

  在开发后端首页与相关功能页面前,我们首先要实现的是所有页面的基类(父类),将常用的功能都预先实现出来,而后面的相关UI类则直接继承它,这样就能简单的自动实现了相关页面功能,不用再每个页面去编写某些按键功能或其他一些功能,如果有特殊的需要,再重写对应的功能类就可以了,对于常用功能,由于之前的逻辑层与数据层已使用模板生成好了,所以直接调用,这样的话比如实现一个列表页面的一些功能(如下图),只需要简单的在页面控件使用指定名称,那么一些实现代码就不用再编写了,这些控件自动拥有对应的功能,比如刷新、自动排序、保存排序(直接修改下图中排序列的输入框后点击保存排序就可以了,这个功能不用编写任何一个代码,只需要将按键放到下图位置,然后使用指定名称就可以了)等功能。这样操作将使我们后面的开发工作更加轻松。而对于列表的话,也只需要调用逻辑层函数直接绑定(bll.BindGrid(this, Grid1, Grid1.PageIndex + 1, Grid1.PageSize, InquiryCondition(), _order);)就可以实现列表、分页、翻页、排序等功能。当然列表点击审核的√与×就会同步更改数据库对应记录的字段与图标,也只需要在列表控件对应函数复制进简单的几行代码就可以实现,这些会在后面相应章节中具体讲述。

  

  先上父类与接口代码

  1 using System;
  2 using System.Collections.Generic;  3 using System.Web.UI;  4 using DotNet.Utilities;  5 using FineUI;  6 using Solution.Logic.Managers;  7 using Solution.Logic.Managers.Application;  8  9 namespace Solution.Web.Managers.WebManage.Application  10 {  11 /// <summary>  12 /// Web层页面父类  13 /// 本基类封装了各种常用函数,c减少重复代码的编写  14 /// </summary>  15 public abstract class PageBase : System.Web.UI.Page, IPageBase  16  {  17 #region 定义对象  18 //逻辑层接口对象  19 protected ILogicBase bll = null;  20 //定义列表对象  21 private FineUI.Grid grid = null;  22 //页面排序容器  23 List<string> sortList = null;  24 #endregion  25  26 #region 初始化函数  27 protected override void OnInit(EventArgs e)  28  {  29 base.OnInit(e);  30  31 //检测用户是否超时退出  32  OnlineUsersBll.GetInstence().IsTimeOut();  33  34 if (!IsPostBack)  35  {  36 //检测当前页面是否有访问权限  37 MenuInfoBll.GetInstence().CheckPagePower(this);  38  39 #region 设置页面按键权限  40 //定义按键控件  41 Control btnControl = null;  42 try  43  {  44 //找到页面放置按键控件的位置  45 ControlCollection controls = MenuInfoBll.GetInstence().GetToolBarControls(this.Controls);  46 //逐个读取出来  47 for (int i = 0; i < controls.Count; i++)  48  {  49 //取出控件  50 btnControl = controls[i];  51 //判断是否除了刷新、查询和关闭以外的按键  52 if (btnControl.ID != "ButtonRefresh" && btnControl.ID != "ButtonSearch" && btnControl.ID != "ButtonClose" && btnControl.ID != "btnReset")  53  {  54 //是的话检查该按键当前用户是否有控件权限,没有的话则禁用该按键  55 ((FineUI.Button)btnControl).Enabled = MenuInfoBll.GetInstence().CheckControlPower(this, btnControl.ID);  56  }  57  }  58  }  59 catch (Exception) { }  60 #endregion  61  62 //记录用户当前所在的页面位置  63 CommonBll.UserRecord(this);  64  }  65  66 //运行UI页面初始化函数,子类继承后需要重写本函数,以提供给本初始化函数调用  67  Init();  68  }  69 #endregion  70  71 #region 接口函数,用于UI页面初始化,给逻辑层对象、列表等对象赋值  72  73 /// <summary>  74 /// 接口函数,用于UI页面初始化,给逻辑层对象、列表等对象赋值  75 /// </summary>  76 public abstract void Init();  77  78 #endregion  79  80 #region 页面各种按键事件  81  82 /// <summary>  83 /// 刷新按钮事件  84 /// </summary>  85 /// <param name="sender"></param>  86 /// <param name="e"></param>  87 protected void ButtonRefresh_Click(object sender, EventArgs e)  88  {  89 FineUI.PageContext.RegisterStartupScript("window.location.reload()"

转载于:https://www.cnblogs.com/FinleyJiang/p/7600818.html

DFrame是一个轻量级ORM框架。它内部集成SQLHelper组件和Dapper框架。 DFrame.Common命名空间集成: 1:EncryptDecrypt(AES/Base64/DES/HmacSha/MD5/SHA/RSA); 2:HttpService 服务类; 3:ImageClass 图片操作; 4:Json json操作; 5:ListComparer 按实体字段去重; 6:Mail 电子邮件操作; 7:QRCode 生成二维码和解读二维码; 8:SMS 短信接口 阿里云; 9:Tools 其他工具包; 10:UserInfo 获取用户信息。 DFrame.DAL命名空间集成: 1:Access 数据库操作类; 2:MySQL 数据库操作类; 3:SQLServer 数据库操作类; 4:生成MySQL数据库方法; 5:生成SQLServer数据库方法; 例如,执行以下代码: Assembly ass = Assembly.Load("Models"); DFrame.DAL.SQLFactory.Create(DFrame.DAL.SQLFactory.DatabaseType.MSSQLServer, "test1", ass); 将会“Models”命名空间下的所有已集成DFrame.Model.DBModel抽象类的实体类,写入到MSSQLServer的"test1"数据库。 实体字段设定: [DFrame.Model.DBField(NotNull = true,DBFieldKey =DFrame.Model.Enums.DBFieldKey.Unique,DefaultValue ="默认",ForeignKey =typeof(Person),Lenght =4001)] public string Text { get; set; } //其中NotNull设定是否可空; //其中DBFieldKey键类型; //其中DefaultValue设定默认值; //其中ForeignKey设定外键; //其中Lenght设定长度; DFrame.Model命名空间: 1:提供DFrame.DAL下的生成数据库用的一些抽象类; 2:命名空间内部已集成简单的SQLHelper操作类。并对继承DFrame.Model.DBModel抽象类的实体提供lambda语句查询方法(目前只支持MSSQLServer数据库)。 lambda查询支持的方法有: 1: long Count() 2: List ToList() 3: int Delete()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值