Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET中的输入验证之服器端验证

ASP.NET中的输入验证之服器端验证2011-11-27 博客园 Nadim在ASP.NET平台下.用户可以使用控件和正则表达式在服务器端实现输入验证,相对来说验证控件使 用简单 且能满足大部分需求 但说句实话 偶对这些东东是不敢恭维

Microsoft Visual Studio验证控件 既是客户端验证又是服务器端验证 当我们触发验证 就会自动生 成很多客户端脚本 如果我们单击按扭不但要触发验证 还要写一些其它的脚本 验证将可能失效 在项目 中为了防止这类意外发生 有人提了用客户端验证 但是敲过代码的都晓得客户端不安全 所以只有先服务 器端验证有时间再加个客户端验证咯

服务器端验证

问题一:验证什么

日期控件 下拉列表 多选 单选 还有最常用的文本框 等等。。

是否为空 是不是数字 字符串的长度等等。。

问题二:什么时候开始验证

什么时候需要验证 什么时候需要用到那些客户输入 但需要注意的是验证不能写的到处是 我们可以定 义一个方法 专门验证页的输入

问题四:异常处理

异常有两种 一种是系统异常 一种是逻辑异常 我们要做的是对逻辑异常的处理 我写了些验证 其实网 上多的是 屁话少说 看代码!。

项目公用输入验证

using System;using System.Collections.Generic;using System.Text.RegularExpressions;namespace Nadim.Verify.Common{/// <summary>/// 参数检验/// </summary>public static class ParameterVerify{#region 检验字符串/// <summary>/// 检验字符串是否有非法字符/// </summary>/// <param name="strInput">输入字符串</param>/// <returns>是否通过检验</returns>public static bool VerifyString(string strInput){//参数检查if (strInput == null || strInput.Trim() == "") return true;//检查是否有非法字符if (Regex.IsMatch(strInput, "([<>""])|(delete from)|(drop table)"))return false;elsereturn true;}#endregion#region 检验日期字符串/// <summary>/// 检验日期字符串是否合法/// </summary>/// <param name="strInput">输入字符串</param>/// <returns>是否通过检验</returns>public static bool VerifyDate(string strInput){if (strInput == null || strInput.Trim() == "") return false;try{Convert.ToDateTime(strInput);}catch (FormatException){return false;}return true;}#endregion#region 检验时间字符串/// <summary>/// 检验时间字符串,验证格式(YYYY-MM-DD hh:mm:ss)/// </summary>/// <param name="strInput">要验证的字符串</param>/// <returns>是否通过检验</returns>public static bool VerifyDateTime(string strInput){//参数检查if (strInput == null || strInput.Trim() == "") return false;if (Regex.IsMatch(strInput, @"^(d{4})(-|/)?((0[1-9])|(1[0-2]))(-|/)?(((0[1-9])|([1-2][0-9]))|(3[0-1])) ([0-1][0-9])|(2[0-3]):([0-5][0-9]):([0-5][0-9])$"))return true;elsereturn false;}#endregion#region 检验编码字符串/// <summary>/// 检验是否是正确的编码字符串,格式:字母、数字、“-”、“_”/// </summary>/// <param name="strInput">输入字符</param>/// <param name="minsize">最小长度</param>/// <param name="maxsize">最大长度</param>/// <returns>是否通过检验</returns>public static bool VerifyNo(string strInput, int minsize, int maxsize){//参数检查if (strInput == null) return false;String expression = @"^(((w)|(_)|(-)|(s)){" + minsize + "," + maxsize + @"})$";if (Regex.IsMatch(strInput, expression))return true;elsereturn false;}#endregion#region 检验数字字符串/// <summary>/// 检验数字字符串/// </summary>/// <param name="strInput">输入字符</param>/// <param name="length">数字长度(不算小数点)</param>/// <param name="precision">小数点后的位数</param>/// <param name="allowMinus">是否允许为负数</param>/// <returns>是否通过检验</returns>public static bool VerifyDecimal(string strInput, int length, int precision, bool allowMinus){String expression;//参数检查if (strInput == null) return false;//判断是否可为负数if (allowMinus)expression = @"^(-{0,1}[0-9]{0," + (length - precision).ToString() + @"}.{0,1}|.[0-9]{1," + precision.ToString() + @"}|-{0,1}[0-9]{1," + (length - precision).ToString() + @"}.[0-9]{0," + precision.ToString() + @"})$";elseexpression = @"^([0-9]{0," + (length - precision).ToString() + @"}.{0,1}|.[0-9]{1," + precision.ToString() + @"}|-{0,1}[0-9]{1," + (length - precision).ToString() + @"}.[0-9]{0," + precision.ToString() + @"})$";if (Regex.IsMatch(strInput, expression))return true;elsereturn false;}#endregion#region 检验变长字符串/// <summary>/// 检验变长字符串/// </summary>/// <param name="strInput">输入字符串</param>/// <param name="minsize">最小长度</param>/// <param name="maxsize">最大长度</param>/// <returns>是否通过检验</returns>public static bool VerifyVarchar(string strInput, int minsize, int maxsize){//参数检查if (strInput == null) return false;if (VerifyString(strInput) && strInput.Length >= minsize && strInput.Length <= maxsize)return true;elsereturn false;}#endregion#region 检验整数字符串/// <summary>/// 检验整数字符串/// </summary>/// <param name="strInput">输入字符串</param>/// <param name="allowMinus">是否允许为负数</param>/// <returns>是否通过检验</returns>public static bool VerifyInt(string strInput, bool allowMinus){int i;//参数检查if (strInput == null) return false;try{i = Convert.ToInt32(strInput.Trim());if (allowMinus == false && i < 0)return false;elsereturn true;}catch (FormatException){return false;}}#endregion}}