惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Cybersecurity and Infrastructure Security Agency CISA
月光博客
月光博客
Apple Machine Learning Research
Apple Machine Learning Research
量子位
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
小众软件
小众软件
T
Tailwind CSS Blog
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
V
Visual Studio Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
The Exploit Database - CXSecurity.com
T
Tenable Blog
博客园 - 叶小钗
宝玉的分享
宝玉的分享
P
Privacy International News Feed
T
Tor Project blog
博客园_首页
AWS News Blog
AWS News Blog
雷峰网
雷峰网
C
Cisco Blogs
Help Net Security
Help Net Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 【当耐特】
T
Threat Research - Cisco Blogs
Last Week in AI
Last Week in AI
K
Kaspersky official blog
人人都是产品经理
人人都是产品经理
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
Schneier on Security
博客园 - Franky
W
WeLiveSecurity
L
LINUX DO - 热门话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
爱范儿
爱范儿
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Proofpoint News Feed
大猫的无限游戏
大猫的无限游戏
腾讯CDC
L
Lohrmann on Cybersecurity
J
Java Code Geeks
美团技术团队
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX

博客园 - josephshi

识别文本文件编码 文件分割 合并 小软件 呵呵 APACHE+ASP.NET 出现问题 compiere/adempiere+pgsql8.2+RHEL4+jdk1.5 学习 memcached 地震... Visual Studio 2008 简体中文正式版下载及序列号(无使用期限限制,正式版) How to Write a Provider Model Retrieving middle rows from a table Snap it! - How to take a screen shot using .NET - josephshi 我用hsqldb 找出闰年 "一个特牛的日期时间判断正则表达式"--我的修改版 - josephshi - 博客园 Copy a table from one database to another in SQL Server 2005 个人用Mozilla FIREFOX的感受 RSS阅读量大于页面访问量 美工太差,效果不好看 有点怪怪的 Highlight a Row in GridView without a postback using ASP.NET and JavaScript
ASP.NET Validation Controls – Important Points, Tips and Tricks
josephshi · 2008-04-02 · via 博客园 - josephshi

ASP.NET validation controls provide an easy-to-use but powerful mechanism of ensuring that data is entered correctly on the forms. There are 6 validation controls included in the ASP.NET 2.0 and ASP.NET 3.5 versions. If you are not familiar with Validation Controls in ASP.NET, here’s a recommended read for you.

In this article, let us see some tips and tricks that can be applied to the validation controls. This article is for beginner and intermediate users who have been using validation controls. There is something for everyone!!

Tip 1: Always use Page.IsValid before submitting data. Apart from the other benefits, using it prevents submitting data from old browsers that do not support javascript.

Tip 2: The display property for the ASP.NET validation controls has 3 settings: None, Static(default), and Dynamic. ‘Static outputs HTML code (related to error) at all times even when no error has occurred. So when there is more than one validation control placed next to the field, the first validation control occupies screen space even when there is no error. In case the second validation control fires an error message, the message is pushed away from the control since the first validation control is occupying screen space.

Set the ‘display’ property of a validation control to ‘Dynamic’. This property renders the error message with the attribute display:none; It helps you to display the error message next to the control .

Tip 3: To prevent validation to occur on the click of the Cancel button, set the ‘CausesValidation’ property to false

<asp:Button ID="btnCancel" Runat="server" CausesValidation="False" Text="Cancel" />

Tip 4: Use the ‘InitialValue’ property of the RequiredFieldValidator to validate controls like combobox which have a default value.

For eg: If your combobox has a default item called “--Select --“ and you want that the user should select a value other than the default value before submitting the form, then set the ‘InitialValue’ property of the RequiredFieldValidator to “--Select--“.

<asp:DropDownList ID="DropDownList1" runat="server">

            <asp:ListItem Value="--Select--" />

            <asp:ListItem Value="Item1" />

            <asp:ListItem Value="Item2" />

            <asp:ListItem Value="Item3" />

        </asp:DropDownList>

        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="DropDownList1" InitialValue="--Select--"></asp:RequiredFieldValidator>

Tip 5: A RegularExpressionValidator can be used to handle string patterns. For eg: A Name textbox that should accept a maximum of 30 characters with only alphabets, space, fullstop(.) and a ‘(apostrophe). A regularexpression like ‘^([a-zA-z.'"s]{2,30})$’ does the trick.

However when you are using Localization and using a language like Arabic, you have to often provide for validating characters in a different dialect. You can solve this using the following technique:

- In the Resource.resx file, create a resourcekey called ValidName giving it a value of ^([a-zA-z.'"s]{2,30})$
- In the Resource.ar-EG.resx file, use the same key but with a diff value ^([
"u0600-"u06FF.'"s]{2,30})$

Use it in your page using the following way. Observe the bold text:
  
<asp:RegularExpressionValidatorID='regEVFname' runat='server'ControlToValidate
='txtName'
Display='Dynamic'ErrorMessage
='Invalid’
ValidationExpression
='<%$ Resources:Resource, ValidName %>'SetFocusOnError='True'></asp:RegularExpressionValidator>
 
When the user selects English, he can enter only A-Za-z. Similarly for Arabic, he can enter only the Arabic characters and not English.

Tip 6: The validation controls provide both Server and Client Side validation. To turn off client-side validation, set the ‘EnableClientScript = false’

<asp:RequiredFieldValidator ID="RequiredFieldValidator2" Runat="server"

   Text="Error" ControlToValidate="TextBox1" EnableClientScript="false"/>

Tip 7: Use CompareValidator to validate date with format of "dd/MM/yyyy".

The validator uses the CultureInfo object of the thread to determine date format. So what you need to do is to set the desired culture format in the Page directive

 <%@ Page culture="your culture" %>

This tip was shared by PeterBlum in the asp.net forums. By the way, Peter has an amazing suite of data entry and validation controls on his site at a reasonable price.

Tip 8: Instead of the textual error message, you can even add an image or sound to your validator control. The Text and Error Message property accepts HTML tags.

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <br />

<asp:RequiredFieldValidator ControlToValidate="TextBox1" EnableClientScript="false" ID="RequiredFieldValidator1" runat="server" Text="<bgsound src='C:"Windows"Media"Windows Error.wav'>"></asp:RequiredFieldValidator>

Just make sure that the EnableClientScript="false" when you want a sound instead of a text message.

Tip 9: If you have two set of forms (eg: Login and Registration) in a single page and want to keep the validation of the two groups separate, use ‘ValidationGroups’. All you need to do, is to specify a common group name for a set of controls that you want to validate separately.

<div>

            <asp:TextBox ID="TextBox1" ValidationGroup="Group1" runat="server"></asp:TextBox>

            <br />

            <asp:RequiredFieldValidator ControlToValidate="TextBox1" ValidationGroup="Group1" ID="RequiredFieldValidator1" runat="server" Text="Error"></asp:RequiredFieldValidator>

            <asp:Button ID="Button1" runat="server" ValidationGroup="Group1" Text="Button" />

        </div>

        <br />

        <br />

        <div>

            <asp:TextBox ID="TextBox2" ValidationGroup="Group2" runat="server"></asp:TextBox>

            <br />

            <asp:RequiredFieldValidator ControlToValidate="TextBox1" ValidationGroup="Group2" EnableClientScript="false" ID="RequiredFieldValidator2" runat="server" Text="Error"></asp:RequiredFieldValidator>

            <asp:Button ID="Button2" runat="server" ValidationGroup="Group2" Text="Button" />

        </div>       

Tip 10: Other validator controls like CompareValidator, RangeValidator etc. do not provide a way to detect if the field is blank or required. The only way is to do this is to add a RequiredFieldValidator along with the other validator controls.

However one exception being the CustomValidator which provides a property called ‘ValidateEmptyText’. Just set it to true and it validates the field even if the user has kept the field blank.

Tip 11: If you want your validation error message to appear in the ‘ValidationSummary‘ control, then set the ‘ErrorMessage’ property on that validation control. Also, setting 'ShowMessageBox = true' on the ValidationSummary enables you to display a popup alert.

Tip 12: In order to create a CustomValidationControl you have to derive from the 'BaseValidator' class and implement the 'EvaluateIsValid()' method.

Tip 13: In case of an error, the validation controls allow you to set focus on a control in error using the ‘SetFocusOnError’ property.

<asp:RequiredFieldValidator SetFocusOnError="true" ControlToValidate="TextBox1" ID="RequiredFieldValidator1" runat="server" Text="Error!!"></asp:RequiredFieldValidator>