asp.net 后端验证
using EntryRegistration.Filters;
using EntryRegistration.Models.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web; namespace EntryRegistration.Models
{
public class Check
{
/// <summary>
/// 检查方法,支持泛型
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="instance"></param>
/// <returns></returns>
public static CheckResult CheckRequire<T>(T instance)
{ //初始化验证结果
CheckResult result = new CheckResult()
{
isSuccess = true,
msg = "验证OK"
};
//获取T类的属性
Type t = typeof(T);
var propertyInfos = t.GetProperties(); //遍历属性
foreach (var propertyInfo in propertyInfos)
{
//检查属性是否标记了特性
RequireAttribute attribute = (RequireAttribute)Attribute.GetCustomAttribute(propertyInfo, typeof(RequireAttribute)); //没标记,直接跳过
if (attribute == null)
{
continue;
} //获取该属性的值
var value = propertyInfo.GetValue(instance);
//获取属性的数据类型
if (typeof(string) == propertyInfo.PropertyType)
{
if (string.IsNullOrEmpty((string)value) && attribute.IsRequire)
{
result.isSuccess = false;
result.msg = propertyInfo.Name + "不能为空";
return result;
} }
else if (typeof(int?) == propertyInfo.PropertyType)
{
if (value == null && attribute.IsRequire)
{
result.isSuccess = false;
result.msg = propertyInfo.Name + "不能为空";
return result;
}
}
else if (typeof(Guid) == propertyInfo.PropertyType)
{
if (Guid.Parse(value.ToString()) == Guid.Empty && attribute.IsRequire)
{
result.isSuccess = false;
result.msg = propertyInfo.Name + "不能为空";
return result;
}
}
} return result;
}
}
}
//RequireAttribute.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace EntryRegistration.Filters
{
public class RequireAttribute : Attribute
{ public bool IsRequire { get; } /// <summary>
/// 构造函数
/// </summary>
/// <param name="isRequire"></param>
public RequireAttribute(bool IsRequire)
{
this.IsRequire = IsRequire;
}
}
}
asp.net 后端验证的更多相关文章
- 购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证
原文:购物车Demo,前端使用AngularJS,后端使用ASP.NET Web API(3)--Idetity,OWIN前后端验证 chsakell分享了前端使用AngularJS,后端使用ASP. ...
- 【ASP.NET Core快速入门】(十五)MVC开发:ReturnUrl实现、Model后端验证 、Model前端验证
ReturnUrl实现 我们要实现returnUrl,我们需要在注册(Register)方法中接收传进的returnUrl并给它默认值null,然后将它保存在ViewData里面 然后我们定义一个内部 ...
- 菜鸟入门【ASP.NET Core】15:MVC开发:ReturnUrl实现、Model后端验证 、Model前端验证
ReturnUrl实现 我们要实现returnUrl,我们需要在注册(Register)方法中接收传进的returnUrl并给它默认值null,然后将它保存在ViewData里面 然后我们定义一个内部 ...
- Asp.net MVC验证那些事(1)-- 介绍和验证规则使用----[转]--[并修改了部分内容]
Asp.net MVC验证那些事(1)-- 介绍和验证规则使用 -----原文地址链接 数据的有效性验证,是程序开发中必不可少的环节.这篇文章,我们将用一个实例来说明如何在MVC中使用Validati ...
- MyCat源码分析系列之——前后端验证
更多MyCat源码分析,请戳MyCat源码分析系列 MyCat前端验证 MyCat的前端验证指的是应用连接MyCat时进行的用户验证过程,如使用MySQL客户端时,$ mysql -uroot -pr ...
- Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用
上篇文章Asp.net MVC验证那些事(1)-- 介绍和验证规则使用中,介绍了Asp.net MVC中的验证功能以及如何使用.这里将对MVC中内置的验证规则进行总结. 一,查找所有验证规则 上篇文章 ...
- Asp.net MVC验证那些事(4)-- 自定义验证特性
在项目的实际使用中,MVC默认提供的Validation Attribute往往不够用,难以应付现实中复杂多变的验证需求.比如, 在注册用户的过程中,往往需要用户勾选”免责声明”,这个checkbox ...
- 【ASP.NET】编程点滴 :ASP.NET身份验证
ASP.NET实际开发中身份验证 是一个不可回避的问题.在相当一段长的时间内,由于不求甚解,我对这个话题似懂非懂.今天就对它做个简单的小结. Authentication and Authorizat ...
- asp.net检查验证字符串是否为纯数字方法小结
原文 asp.net检查验证字符串是否为纯数字方法小结 在asp.net中验证字符串是不是为数字我们没有像php中那么多丰富的函数来直接使用,这里我整理了一些比较实例的验证字符串是否为纯数字方法代码 ...
随机推荐
- 微服务之springcloud技术栈
一.微服务架构图: 二.技术介绍:(技术选型随着代码的编写会完成) 关于技术选型,我盗了一张微服务技术栈的图,如下:原文:http://www.jianshu.com/p/2da6becfb019 我 ...
- 用js实现预览待上传的本地图片
js实现预览待上传的本地图片,代码如下: <form name="form5" id="form5" method="post" ac ...
- C#匿名对象的使用
单个对象 new { Inv = item.Inv, Count = item.Count } 数组 var testData = new[] { }, }, }, }, }, }, }, }, } ...
- vs2010静态链接Qt
先按照这个帖子弄好静态库 http://www.cnblogs.com/rollenholt/articles/2518642.html 注意原文中config那一步最后一个"-" ...
- qt 例子地址
http://blog.sina.com.cn/s/articlelist_2801495241_0_2.html qt打包http://blog.chinaunix.net/uid-24641004 ...
- ubuntu下超强的截图工具scrot
Scrot ,是一个命令行下使用的截图工具,支持全屏.窗口.选取.多设备.缩略图.延时,甚至可以截图完毕之后指定某程序打开截好的图片. 终端安装: sudo apt-get install s ...
- jquery ajax中success与complete的执行顺序 (转)
http://blog.sina.com.cn/s/blog_4adc4b090101dhnh.html https://q.cnblogs.com/q/21810/ **************** ...
- jq 跳转方式汇总
按钮式: <INPUT name="pclog" type="button" value="GO" onClick="loc ...
- C#中一道关于线程同步的练习题——模拟多窗口售票
题目:模拟窗口卖票,四个窗口同时对外开放售票,需要按顺序售出. 要求:输出每一张票的售出时间和售出窗口,不能出现票未售出或者被售出多次的情况. using System; using System.C ...
- python 读取文件、并以十六进制的方式写入到新文件
#!/usr/bin/env python infile = file("in.mp3","rb") outfile = file("out.txt& ...