ASP.NET中的输入验证之服器端验证

在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;
            else
                return 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;
            else
                return 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;
            else
                return 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() + 

@"})$";
            else
                expression = @"^([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;
            else
                return 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;
            else
                return 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;
                else
                    return true;
            }
            catch (FormatException)
            {
                return false;
            }
        }
        #endregion
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
, 验证
, return
, tostring
, 参数最大长度
, 输入
, net 字符串 bool
, 验证异常
, 检验
, 验证输入参数
, 最大长度验证
Trim失效
,以便于您获取更多的相关知识。

时间: 2024-09-30 03:29:57

ASP.NET中的输入验证之服器端验证的相关文章

ASP.NET中如何使用验证码效验

主要功能: * 生成验证码 * 效验验证码 基本原理: 根据一定的规则生成随机的5为字符(由0-9的数字和A-Z的字母组成),并写入Session.验证的时候再从Session中取出进行比较. 前提知识: 关于ashx文件 本质:缺少html文件的asp教程x文件. 使用场景: 适合生成动态的图像或文本. ashx输出作为页面元素img的背景(属性src的值,eg:<img src="../Handler/WaterMark.ashx" id="vimg" a

ASP.NET MVC5验证系列之服务端验证_实用技巧

 这篇文章,我将会说到,使用数据注解API来进行服务端验证.ASP.NET MVC 框架在执行的时候,验证所有传递到控制器的数据,如果验证失败就把错误消息,填充到ModelState对象中,并且把这个对象传递给控制器,然后控制器中的方法,根据Modelstate的状态来判断,是否验证失败还是验证通过. 在这里,我将会使用两种方法来验证数据的合法性,一个是手动添加错误消息到ModelState对象中,另外一个方法是使用数据注解[Data Annotation] API,来做. 先来看看使用手动验证

ASP.NET中如何对页面输出缓存

  最简单的缓存机制,把整个Aspx页面保存在服务器端内存中,用户请求页面时,直接从服务器端内存中提取数数据,不在经历页面的生命周期.主要用于不经常更新和修改,而在第一次编译是时要经过大量处理的数据.页面输出缓存是缓存的整个页面.     使用很简单<%@ OutPutCache Duration="60" VaryByParam="none"%>     Duration:缓存时间     VaryByParam:通过参数来更新缓存的内容     还有

(100分)初学ASP.NET AJAX想问问题!关于CALLBACK机制和ASp.net ajax中的调用WebService能否改变服务端控件的属性!

问题描述 如题目我能否在asp.netajax中前台通过调用webservice的方法调用后台控件的属性值如果用PageMethod的话发现只能调用静态方法或者用CallBack也可以能不能?如果不能有没有什么替代的方法,我不想用UpdataPanel,感觉很累赘 解决方案 解决方案二:CallBack应该可以,是调用还是改变?解决方案三:O_O解决方案四:是改变属性值解决方案五:用JS改变不可以么?解决方案六:JS可以??不会吧解决方案七:如果设置控件属性,传递的值比较小的话,可能是xmlht

初识ASP.NET---ASP.NET中验证控件的用法

一.前言         在Web应用程序中,大都是对数据的提供或收集,对于数据的有效性验证是非常重要的,验证就是给所收集的数据应用的一系列规则.         为进行有效性验证而收集的数据来自于在应用程序中提供的Web窗体,Web窗体由不同的类型的HTML元素组成,可以对窗体元素应用不同的验证规则,对元素应用的规则越多,应用到数据上的有效性验证就越严格.          验证可以有客户端和服务器段的验证.客户端的验证主要是用JavaScript脚本,效率高,响应时间短,但安全性不好:服务器

ASP.NET MVC3中Model验证

原文:ASP.NET MVC3中Model验证  概述 上节我们学习了Model的数据在界面之间的传递,但是很多时候,我们在数据传递的时候为了确保数据的有效性,不得不给Model的相关属性做基本的数据验证. 本节我们就学习如何使用 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据模型中的各个字段的验证. 这些特性用于定义常见的验证模式,例如范围检查和必填字段.而 DataAnnotations 特性使 MVC 能够提供客户端和服务器验证检查,

在ASP.NET代码中增加了一个验证环节/提示窗口,页面竟然出现了惊人的BUG面目全非请问有谁出现过这种事情求解答方法?代码都列出来了

问题描述 在ASP.NET代码中增加了一个提示窗口,页面竟然出现了惊人的BUG面目全非protectedvoidButton1_Click(objectsender,EventArgse){if(TextBox1.Text.ToString().Trim()==""){Page.ClientScript.RegisterStartupScript(GetType(),"sf","<scriptlanguage='javascript'>aler

ASP.NET MVC中很酷的jQuery验证插件

代码:http://down.51cto.com/data/187446 在看这篇文章之前,希望你能够先阅读下我将会使用得到jquery的插件作者博客:http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ 下载下来后,解压到某个地方. 1.创建一个asp.net mvc 3项目: 2.把需要的js和css文件添加到项目中来(在你刚才解压的目录下). 3.

如何在ASP.NET中获取随机生成的cookie加密与验证密钥

asp.net|cookie|加密|随机     本文是从ASP.NE T 1.1升级到ASP.NET 2.0需要考虑的Cookie问题的补充,通过示例代码说明如何通过反射在ASP.NET 1.1与ASP.NET 2.0中获取随机生成的cookie加密与验证密钥.ASP.NET 1.1示例代码:            object machineKeyConfig = HttpContext.Current.GetConfig("system.web/machineKey");