Request参数值自动去空格
/// <summary>
/// TypeTrimHelper
/// </summary>
public static class TypeTrimHelper
{
/// <summary>
/// 类型字典
/// </summary>
public static ConcurrentDictionary<Type, PropertyInfo[]> TypeDictionary
= new ConcurrentDictionary<Type, PropertyInfo[]>();
/// <summary>
/// 获取Type属性
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static PropertyInfo[] GetTypeProperties(Type type)
{
PropertyInfo[] typeProperties = null;
if (TypeDictionary.ContainsKey(type))
{
typeProperties = TypeDictionary[type];
}
else
{
typeProperties = type.GetProperties();
TypeDictionary[type] = typeProperties;
}
return typeProperties;
}
private static bool HasNotAutoTrimSpacesAttribute(Type type)
{
return type.GetCustomAttribute<NotAutoTrimSpacesAttribute>()
!= null;
}
private static bool HasNotAutoTrimSpacesAttribute(PropertyInfo propertyInfo)
{
return propertyInfo.GetCustomAttribute<NotAutoTrimSpacesAttribute>()
!= null;
}
/// <summary>
/// 去空格操作
/// </summary>
/// <param name="objType">类型</param>
/// <param name="obj">当前对象</param>
public static void TypeTrim(Type objType, object obj)
{
if (HasNotAutoTrimSpacesAttribute(objType) || obj == null) { return; }
PropertyInfo[] typeProperties = GetTypeProperties(objType);
foreach (var typeProperty in typeProperties)
{
if (HasNotAutoTrimSpacesAttribute(typeProperty)) { continue; }
var cPropertyType = typeProperty.PropertyType;
if (cPropertyType == typeof (string))
{
if (!typeProperty.CanWrite)
{
continue;
}
string value = typeProperty.GetValue(obj) as string;
if (value != null)
{
typeProperty.SetValue(obj, value.Trim());
}
}
else
{
if (cPropertyType.IsClass)
{
if (cPropertyType.IsValueType)
{
continue;
}
if (cPropertyType.GetInterface(typeof (IEnumerable).Name, false) != null)
{
var values = typeProperty.GetValue(obj) as IEnumerable;
if (values != null)
{
var enumerator = values.GetEnumerator();
while (enumerator.MoveNext())
{
if (enumerator.Current != null)
{
var itemType = enumerator.Current.GetType();
TypeTrim(itemType, enumerator.Current);
}
}
}
}
else
{
TypeTrim(cPropertyType, typeProperty.GetValue(obj));
}
}
}
}
}
}
Request参数值自动去空格的更多相关文章
- 日期,为下拉列表添加日期,优化,目前本人博客上最优的解决方案,之前学习的通过判断得到平年闰年,而这个是让系统自动去判断,无须if判断,代码示例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- WordPress实现中英文数字之间自动加空格排版
通常来说中文与英文.中文和数字之间加上空格的排版会更加好看,但是如果让我们在编辑文章的时候人工添加,感觉非常繁琐和让人厌烦,所以今天龙笑天下就来跟大家介绍一下WordPress如何实现中英文数字之间自 ...
- ORACLE对字符串去空格处理(trim)
首先便是这Trim函数.Trim 函数具有删除任意指定字符的功能,而去除字符串首尾空格则是trim函数被使用频率最高的一种.语法Trim ( string ) ,参数string:string类型,指 ...
- 11月8日下午Jquery取属性值(复选框、下拉列表、单选按钮)、做全选按钮、JSON存储、去空格
1.jquery取复选框的值 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- jQuery取复选框值、下拉列表里面的属性值、取单选按钮的属性值、全选按钮、JSON存储、*去空格
1.jquery取复选框的值<!--引入jquery包--> <script src="../jquery-1.11.2.min.js"></scri ...
- EditText中输入手机号码时,自动添加空格
输入手机号码时,自动添加空格,更容易辨别 public class PhoneWatcher implements TextWatcher { private EditText _text; publ ...
- js使用正则表达式去空格
写成类的方法格式如下:(str.trim();) <script language="javascript"> String.prototype.trim=functi ...
- PHP trim去空格函数
trim() 能除去的字符有“ ”空格."\t"水平制表符."\n"换行符."\r"回车符."\0字符串结束符".&qu ...
- Jquery取属性值(复选框、下拉列表、单选按钮)、做全选按钮、JSON存储、去空格
1.jquery取复选框的值 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
随机推荐
- sqlzoo 之 nobel 错题集
12.查找尤金•奧尼爾EUGENE O'NEILL得獎的所有細節 我: select yr , subject , winner from nobel where winner = 'eugene o ...
- TP5 自定义验证器
TP内置验证功能提供两种验证方法 验证器(推荐) $validate = Validate::make([ 'id' => 'require|integer', ]); if ($validat ...
- 关于ES6兼容IE 问题记录之一
这两天在做前端网页时,遇到一个问题,页面打开发生乱码,如下: 现象:360 浏览器,在急速模式下(即谷歌模式)是OK的显示,第一张图布局OK:在兼容模式下(即IE模式)是显示NG的,第二张图布局乱码 ...
- apache配置报错:Unrecognized LogFormat directive %I
跟着阿里云调日志教程(https://help.aliyun.com/document_detail/87740.html)时出现报错: AH00526: Syntax error on line . ...
- https://segmentfault.com/a/1190000014637728
原网站地址:https://segmentfault.com/a/1190000009657295#articleHeader3 基于 vue2 + element-ui 构建的后台管理系统 vue. ...
- VMware虚拟机配置嵌套虚拟化
VMware虚拟机下创建kvm-sever,server下继续创建kvm虚拟机(嵌套虚拟化),返回libvirt错误解决办法:SSH连接VMwarevi /etc/vmware/config增加一行设 ...
- 深入理解Jvm 虚拟机
参考: 内存模型:https://blog.csdn.net/qq_34280276/article/details/52783096 类加载原理:https://nomico271.github.i ...
- linux服务器系统负载监控-shell脚本
一.监控服务器系统负载情况: 1.用uptime命令查看当前负载情况(1分钟,5分钟,15分钟平均负载情况) # uptime 15:43:59 up 186 days, 20:04, 1 us ...
- 关于TP5.0搜索后分页
使用$Model->where($where)->paginate($page,$count);的时候如果点击下一页会出现条件重置问题,经过测试可以使用Db::name('data') - ...
- easyui Tree树形控件的异步加载
Tree控件 $('#partyOrgTree').tree({ checkbox: false, url: getDataUrl, onClick: function (node) { getDiv ...