/* * 扩展NameValueCollection * 调用方法:Request.QueryString.IsNumeric("ID") */ using System; using System.Collections.Specialized; using System.Text.RegularExpressions; namespace App { /// <summary> /// 扩展 System.Collections.Specialized.NameValueCollection /// </summary> public static class NameValueCollectionExtensions { /// <summary> /// 使用正表达式来验证指定值 /// </summary> public static bool IsMatch(this NameValueCollection nv, string key, string pattern) { return Regex.IsMatch(nv[key] ?? "", pattern, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace); } /// <summary> /// 检查指定值是否为数字 /// </summary> public static bool IsNumeric(this NameValueCollection nv, string key) { return Regex.IsMatch(nv[key] ?? "", @"^\d{1,}$"); } /// <summary> /// 以string类型返回指定值,如值非纯数字则返回空字符串 /// </summary> public static string ToNumeric(this NameValueCollection nv, string key) { return nv.IsNumeric(key) ? nv[key].Trim() : ""; } /// <summary> /// 以int类型返回指定值 /// </summary> public static int ToInt(this NameValueCollection nv, string key) { int val = 0; int.TryParse(nv[key], out val); return val; } /// <summary> /// 以long类型返回指定值 /// </summary> public static long ToLong(this NameValueCollection nv, string key) { long val = 0; long.TryParse(nv[key], out val); return val; } /// <summary> /// 以short类型返回指定值 /// </summary> public static short ToShort(this NameValueCollection nv, string key) { short val = 0; short.TryParse(nv[key], out val); return val; } /// <summary> /// 以byte类型返回指定值 /// </summary> public static byte ToByte(this NameValueCollection nv, string key) { byte val = 0; byte.TryParse(nv[key], out val); return val; } /// <summary> /// 返回安全的SQL字符串 /// </summary> public static string ToVarchar(this NameValueCollection nv, string key) { //string val = nv[key] ?? ""; //val = val.Replace("'", "''"); return (nv[key] ?? "").Replace("'", "''"); } /// <summary> /// 以bool类型返回指定值 /// </summary> public static bool ToBoolean(this NameValueCollection nv, string key) { bool val = false; bool.TryParse(nv[key], out val); return val; } /// <summary> /// 检查指定值是否为DateTime类型 /// </summary> public static bool IsDateTime(this NameValueCollection nv, string key) { DateTime date; return (DateTime.TryParse(nv[key], out date)); } /// <summary> /// 以DateTime返回指定值,如指定值为非法日期则返回当前时间 /// </summary> public static DateTime ToDateTimeOrNow(this NameValueCollection nv, string key) { DateTime date = DateTime.Now; DateTime.TryParse(nv[key], out date); return date; } /// <summary> /// 以DateTime返回指定值,如指定值为非法日期则返回null /// </summary> public static DateTime? ToDateTimeOrNull(this NameValueCollection nv, string key) { DateTime date; if (DateTime.TryParse(nv[key], out date)) return date; else return null; } } }