打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Selective Validation Using ASP.NET Validation Controls

Selective Validation Using ASP.NET Validation Controls

Introduction

ASP.NET validation controls allow you to quickly validate your forms.This works well as long as you want to validate entire form values at atime. However, if you want to validate the form in ‘parts‘ then thevalidation controls pose certain problems. In this article I will showyou how to selectively call the validation controls.

How Validation Controls Work?

Before we begin examining ourcode it is important to know how validation controls work. By defaultvalidation controls work at client side (EnableClientScript property).They emit JavaScript in the browser which does the task of validationbefore the form is posted back. If any validation fails the form is notposted. If you set EnableClientScript property to false then the clientside javascript is not emitted. When you submit the form it is postedback and the Validate method of the Page class is called (you can alsocall this method yourself). Based of the validation results errors aredisplayed as in previous case. You can also check IsValid property ofPage or the validation control under consideration to know whetherinput is valid or not. You can access individual validation control bytheir IDs (just like any other server control) or throughPage.Validators collection.

Selective Validation

It must be clear to you that entire pageor web form is validated at once. Consider an example where you havetwo text boxes. One for entering Name and other for entering Age. Ifage is entered it must be between 18 to 100. Assume that these entriesare independent of each other. That is irrespective of whether Age isentered or not you need to process Name and vice a versa. This meansthat we want to selectively validate our page. Not all validations needto be fired at once. As a first step you may attachRequiredFieldValidator to the Name and Age text boxes.In addition you may also attach a RangeValidator to the Age text box.If you set EnableClientScript property of all the validation controlsto true (default) then your form will not be posted unless you enterAge. This is certainly not what we want. Also if you setEnableClientScript property to false then the form is posted back tothe sever but it always shows error message for Age text box. This isalso not a good idea. In the following section we will see how to solveabove problem. Note that as far as possible you should stick to clientside validation as it reduces server round trips. Since our problem isa special case we are disabling the client script.

Solution

We will now develop a sample web form to illustrate our solution. The form contains following controls:
  • TextBox1 to enter Name
  • TextBox2 to enter Age
  • Button1 to process value entered in TextBox1
  • Button2 to process value entered in TextBox2
  • RequiredFieldValidator (namevalidator) to ensure that user enters value in TextBox1
  • RequiredFieldValidator (agerequiredvalidator) to ensure that user enters value in TextBox2
  • RangeValidator (agevalidator) to ensure that user enters value in TextBox2 in the range of 18-100.
Once the form is ready you need to set various validationcontrols appropriately to validate respective text boxes (i.e. setproperties such as ControlToValidate, Text, ErrorMessage, MinimumValueand MaximumValue). Then set EnableClientScript property of ALLvalidation controls to false. You can easily do that in VS.NETproperties window or in markup. Next, in the Page_Load add code similarto following example:
namevalidator.Enabled = Trueagevalidator.Enabled = Trueagerequiredvalidator.Enabled = True
Here, we simply set Enabled of all validation controls to true.This is necessary so that every thing works well even after multiplepost backs. Next, add following code in Click event of Button1.
agevalidator.Enabled = Falseagerequiredvalidator.Enabled = FalseIf namevalidator.IsValid ThenLabel3.Text = "You Entered Name :" & TextBox1.TextLabel4.Text = ""End If
Here, we set Enabled property of validation controls for TextBox2(Age). This will suppress validation of TextBox2 and no error isgenerated. We then check IsValid property of namevalidator and if it istrue we process the entered value. Similarly, add following code in theClick event handler of Button2.
namevalidator.Enabled = FalseIf agerequiredvalidator.IsValid And _agevalidator.IsValid ThenLabel3.Text = ""Label4.Text = "You Entered Age :" & TextBox2.TextEnd If
This will ensure that when you click Button2 validation for TextBox1 will be suppressed.

Summary

In this article I explained how ASP.NET validationcontrols work. We saw a situation where you want to validate a page inparts. We also saw how to achieve this by making the validation on theserver along with the Enabled property of validation controls.

About the author
Author : Bipin Joshi
Bipin Joshi is the webmaster of DotNetBips.com. He is the founder of BinaryIntellect Consulting (www.binaryintellect.com) - a company providing training and consulting services on .NET framework. He conducts intensive training programs in Thane/Mumbai for developers. He is also a Microsoft MVP (ASP.NET) and a member of ASPInsiders.
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
使用自定义函数对 ASP.NET 服务器控件进行验证
[翻译]你或许还为听说过的一些ASP.NET 2.0要诀 - 从这里开始出发....——lxinxuan‘s Blog - 博客园
ASP.NET 控件开发速成教程:生成复合控件
关于WPF的验证
日历控件绑定TextBox asp.net
JS控制 Asp.net 验证控件的验证顺序
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服