Selective Validation Using ASP.NET Validation Controls

原创 2005年03月02日 10:30:00

Selective Validation Using ASP.NET Validation Controls


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 a time. However, if you want to validate the form in 'parts' then the validation controls pose certain problems. In this article I will show you how to selectively call the validation controls.

How Validation Controls Work?

Before we begin examining our code it is important to know how validation controls work. By default validation controls work at client side (EnableClientScript property). They emit JavaScript in the browser which does the task of validation before the form is posted back. If any validation fails the form is not posted. If you set EnableClientScript property to false then the client side javascript is not emitted. When you submit the form it is posted back and the Validate method of the Page class is called (you can also call this method yourself). Based of the validation results errors are displayed as in previous case. You can also check IsValid property of Page or the validation control under consideration to know whether input is valid or not. You can access individual validation control by their IDs (just like any other server control) or through Page.Validators collection.

Selective Validation

It must be clear to you that entire page or web form is validated at once. Consider an example where you have two text boxes. One for entering Name and other for entering Age. If age is entered it must be between 18 to 100. Assume that these entries are independent of each other. That is irrespective of whether Age is entered or not you need to process Name and vice a versa. This means that we want to selectively validate our page. Not all validations need to be fired at once. As a first step you may attach RequiredFieldValidator 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 controls to true (default) then your form will not be posted unless you enter Age. This is certainly not what we want. Also if you set EnableClientScript property to false then the form is posted back to the sever but it always shows error message for Age text box. This is also not a good idea. In the following section we will see how to solve above problem. Note that as far as possible you should stick to client side validation as it reduces server round trips. Since our problem is a special case we are disabling the client script.


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 validation controls appropriately to validate respective text boxes (i.e. set properties such as ControlToValidate, Text, ErrorMessage, MinimumValue and MaximumValue). Then set EnableClientScript property of ALL validation controls to false. You can easily do that in VS.NET properties window or in markup. Next, in the Page_Load add code similar to following example:
namevalidator.Enabled = True
agevalidator.Enabled = True
agerequiredvalidator.Enabled = True
Here, we simply set Enabled of all validation controls to true. This is necessary so that every thing works well even after multiple post backs. Next, add following code in Click event of Button1.
agevalidator.Enabled = False
agerequiredvalidator.Enabled = False
If namevalidator.IsValid Then
	Label3.Text = "You Entered Name :" & TextBox1.Text
	Label4.Text = ""
End If
Here, we set Enabled property of validation controls for TextBox2 (Age). This will suppress validation of TextBox2 and no error is generated. We then check IsValid property of namevalidator and if it is true we process the entered value. Similarly, add following code in the Click event handler of Button2.
namevalidator.Enabled = False
If agerequiredvalidator.IsValid And _
	agevalidator.IsValid Then
	Label3.Text = ""
	Label4.Text = "You Entered Age :" & TextBox2.Text
End If
This will ensure that when you click Button2 validation for TextBox1 will be suppressed.


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

Invalid postback or callback argument(回发或回调参数无效)

出现错误的揭示如下:Invalid postback or callback argument.  Event validation is enabled using in configuratio...
  • VicSoft
  • VicSoft
  • 2008年04月03日 16:28
  • 3822

Chapter 8. Validation Controls

Chapter 8. Validation ControlsOBJECTIVESInvestigate the validation controls provided by ASP.NETCreat...
  • masterall
  • masterall
  • 2005年09月08日 22:25
  • 570

3.1. Cross-validation: 评估 estimator 的性能

1.13. 特征选择(Feature selection) sklearn.feature_selection 模块中的类能够用于数据集的特征选择/降维,以此来提高预测模型的准确率或改善它们在高维数...
  • u010016927
  • u010016927
  • 2017年08月11日 21:08
  • 296

PKIX path validation failed: mestamp check failed 错误

Caused by: java.lang.RuntimeException:
  • u011148770
  • u011148770
  • 2016年01月27日 14:27
  • 1856


自定义会话验证器,实际上是对Shiro的Quartz升级,使其支持2.0以上版本兼容Spring4对Quartz版本的要求 重写SessionValidationJob public ...
  • jin5203344
  • jin5203344
  • 2016年12月12日 10:54
  • 1556


  • u011955252
  • u011955252
  • 2016年10月25日 17:24
  • 614

Matlab BP神经网络之validation checks

Matlab版本:Matlab 2014a 1 问题描述     bp网络设置如下 net = newff(all_tra, all_bar, 9, {'tansig','purelin'}, 'tr...
  • Q1302182594
  • Q1302182594
  • 2015年05月16日 22:50
  • 7498

机器学习中Training, Validation 和 Test 集合之间的区别

机器学习中Training, Validation 和 Test 集合之间的区别
  • beijingbuaaer
  • beijingbuaaer
  • 2016年09月08日 20:47
  • 2212


Manual 下面的钩都要选上, Build 下面只要把第一个“Classpath Dependency Validator”钩上就可以,下面所有的钩都可以去掉...
  • sinat_32778829
  • sinat_32778829
  • 2016年06月28日 14:48
  • 5001

Invalid postback or callback argument问题解决方法

调试net程序时有时会遇到下面的问题:Invalid postback or callback argument.  Event validation is enabled using enableE...
  • tuzi_xz
  • tuzi_xz
  • 2008年01月25日 10:29
  • 7909
您举报文章:Selective Validation Using ASP.NET Validation Controls