Selective Validation Using ASP.NET Validation Controls
来源:百度文库 编辑:神马文学网 时间:2024/04/30 09:59:51
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 Agetext 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 = TrueHere, 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 IfHere, 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 IfThis 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 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.
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 Agetext 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 = TrueHere, 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 IfHere, 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 IfThis 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 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.
Selective Validation Using ASP.NET Validation Controls
ASP.NET: Selectively Enable Form Validation When Using ASP.NET Web Controls -- MSDN Magazine, April
Using XML Validation Framework with Web Services
FREE ASP.NET Superexpert Controls
checksum:incorrect;checksum:validation disabl...
Silverlight实例教程 - Validation数据验证开篇
在Struts 2.0中实现表单数据校验(Validation)
java,j2ee资料:Webwork2.2.2 重返Client Validation
Silverlight实例教程 - Validation数据验证基础属性和事件
ASP.NET
什么是 ASP/ASP+/ASP.NET
在Struts 2.0中实现表单数据校验(Validation) - Max On Jav...
Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议
ASP.NET技术网站
asp.net面试题
常用asp.net代码
ASP.NET快速学习
ASP.net]Loading绘制
ASP.NET AJAX入门
asp.net的生命周期
ASP.NET题
ASP.NET AJAX入门
SharpDevelop 配置asp.net
ASP.NET Profile