博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于特性的服务端验证
阅读量:5008 次
发布时间:2019-06-12

本文共 2119 字,大约阅读时间需要 7 分钟。

最近在做一个项目,某网站的会员系统。感觉在每个页面做服务端的验证非常烦锁。所以写了一个用方法用对象特性来实现功能。

首先定义Attribute类

namespace DataBase{    ///     /// Attribute类    ///     [AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]    public class DataFieldAttribute : Attribute    {        string _columnName;        bool _IsEmpty = true;        public DataFieldAttribute(string columnName)        {            this._columnName = columnName;        }        ///         /// 是否允许为空        ///         public bool IsEmpty        {            get { return this._IsEmpty; }            set { this._IsEmpty = value; }        }    }}

对象特性的声明

///         /// 关键字        ///         [DataBase.DataField("keyword", IsEmpty = false)]        public string KeyWord        {            get            {                return _keyword;            }            set            {                _keyword = value;            }        }

写入基类的验证

protected string DataVerificationForPage(object o, out bool reValue)    {        reValue = true;        string str = "";        Type oType = o.GetType();        PropertyInfo[] proInfos = oType.GetProperties();        object fieldValue = null;        DataFieldAttribute attribute;        foreach (PropertyInfo proInfo in proInfos)        {

              if (proInfo.IsDefined(typeof(DataFieldAttribute), false))

              {

attribute = (DataFieldAttribute)Attribute.GetCustomAttribute(proInfo, typeof(DataFieldAttribute));//判断是否允许为空                if (!attribute.IsEmpty)                {
if (string.IsNullOrEmpty(proInfo.GetValue(o, null).ToString())) { reValue = false; str += "不允许为空!"; return str; } } } } return ""; }

最后面页面调用

RssModel m = GetData();bool reValue;string str = this.DataVerificationForPage(m, out reValue);if (!reValue){     Js.Text = "alert('" + str + "');";     return;}

注:上面的代码只是实现了服务端验证数据不能为空的情况,还有更多验证可以通过增加特性属性来灵活处理。可以省去每个页面都要去做的验证操作(只需要在实例化对象的时候加注对象属性的特性即可),而且不容易遗漏。在服务器性能允许的时候可以考虑用此方法来实现。

转载于:https://www.cnblogs.com/wxwu/archive/2012/06/13/Attribute.html

你可能感兴趣的文章
EasyUI datagrid 的多条件查询
查看>>
Mac升级bash到最新版本
查看>>
利用vagrant打包系统--制作自己的box
查看>>
美女与硬币问题
查看>>
计算几何算法概览 (转)
查看>>
Notepad++的ftp远程编辑功能
查看>>
cmd 利用IE打开网页
查看>>
sql分页存储过程
查看>>
IIS HTTP 错误 500.19 - Internal Server Error HTTP 错误 401.3 - Unauthorized 解决办法
查看>>
再次记录 cocoapods
查看>>
社交项目--day03
查看>>
记录添加mvn命令,以及安装jar包到本地仓库
查看>>
hibernate(七) hibernate中查询方式详解
查看>>
Next Permutation
查看>>
oracle增删改
查看>>
hdu 1257 最少拦截系统(简单贪心)
查看>>
Spring Boot 系列教程5-热部署-devtools模块
查看>>
[原] 别人家老婆
查看>>
CentOS7忘记root密码
查看>>
C语言基础课第一次作业
查看>>