扩展NameValueCollection

/*
 * 扩展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;
        }

    }
}

 

还是这个界面比较清爽,呵呵……

posted @ 2009-09-19 10:08  Zhou.  阅读(414)  评论(0)    收藏  举报