Print
Add To Favorites
Email To Friend
Rate This Article
|
Using the Enterprise Library 3 Validation Block in ASP.NET
|
Published:
06 Apr 2007
|
Abstract
This article will show you how to use the new Enterprise Library 3 Validation Block to validate data entered into an ASP.NET page. This article will explain the block and how you can set it up in a Details View to perform validation in a domain-modeling environment. |
 |
by Brian Mains
Feedback
|
Average Rating: This article has not yet been rated.
Views (Total / Last 10 Days):
23485/
72
|
|
|
Introduction |
With the release of Enterprise Library 3, a brand new
Validation Block (Microsoft.Practices.EnterpriseLibrary.Validation) has emerged
that allows developers to perform custom validation in an application based on
custom validation setup for a business object. When the validation occurs, any
validation errors are returned through a ValidationResult collection, so you
can get a listing of all the problems that occurred with the validation of a
business object. However, with this new block comes integrated ASP.NET
features. Custom validators (like the existing validation controls) can be used
to perform the actual validation of the business object and the errors render
in the ValidationSummary control. We will see how that works in the rest of the
article.
Enterprise Library has several built-in validators that
perform a certain validation of data. For instance, it has a
StringLengthValidator object that validates that the length of a string falls
within a certain range, or a DateTimeRangeValidator for validating that a date
occurs within a specific range. You can instantiate these validators and
perform validation or each validator has an attribute class associated with it
so the validators can be defined as attributes to a property in a business
object. This is how the ASP.NET integration can utilize the validation as we
will see later. An alternative to this is that the configuration file can setup
these validations, but I am going to use the attribute approach as I think it
is cleaner and more understandable. Lastly, you can build your own custom
validators, which is out of the scope of this article, but I hope to write
about it later.
To integrate the business object validation into ASP.NET, the integration
library contains a ParameterProxyValidator control that works like any other
validator control in the ASP.NET framework. The validator has extra properties
that map the validator to the business object property that you want to validate,
assuming that the business object property maps directly to an ASP.NET control.
Let us look at an example.
|
|
|
User Comments
Title:
Validation
Name:
Manuel
Date:
2008-08-18 6:35:09 AM
Comment:
Sory, just to add, i've built those rules in app.config (to be able to edit those validations rules easealy)
Manuel
|
Title:
Validation
Name:
Manuel
Date:
2008-08-18 6:33:15 AM
Comment:
Maybe i've explained myself wrong...i want to be able to use RuleSet's to validate objects according to those rules. I've seen this article (http://www.devx.com/dotnet/Article/34950/1954) that seems to be able to do what i want, but i built a small demo projecto and i'm not beeing able to validate against those rules. Have you ever used it? Can you help me with this small demo?
Thank's, Manuel
|
Title:
Validation Reply
Name:
Brian
Date:
2008-08-08 9:02:43 AM
Comment:
I don't believe they have this built in, but it should be possible to achieve. There is a PropertyComparisonValidator which I believe compares the values of two properties together, but if you use a tool like Reflector, you may be able to look at the code and implement something very similar to suite your needs.
|
Title:
Validation
Name:
Manuel
Date:
2008-08-08 5:36:44 AM
Comment:
Let's say you have an extra property in your User class (userGender) and if the object is set with this attribute to "Female" it should validate the phone number, otherwise it should't. Is it possible to define this?
Best regards, Manuel
|
Title:
web.config
Name:
Brian
Date:
2007-09-25 8:34:51 PM
Comment:
Check the web.config; this is the preferred area to do so over the @Register declarations. It is in the ASPNET.Integration companion DLL, which you can see in the .NET references list (I believe).
|
Title:
How is the control available on page?
Name:
Tim
Date:
2007-09-25 4:38:06 PM
Comment:
Uhhhh, how did you get the "el:PropertyProxyValidator" control to work on the page. Obviously, it must have been imported through an @Register, or a line in web.config, but that would be an extremely handy thing to show in your article. Thanks.
|
Title:
Client Side Validation Reply
Name:
Brian Mains
Date:
2007-04-18 11:32:23 AM
Comment:
You are right, there are trade-off's with this approach; if you plan to do business validation, it would make sense to do it with the EL Validation block, especially if most of it is done on the server anyway (complex validation logic that is).
Sometimes I prefer it that way because of some of the problems I've experienced with client-side validation in certain situations, but never the less, it is very helpful to have that client validation capability.
Everything is a trade-off, and it depends on popularity of the applications, network traffic amount, speed, etc.
|
Title:
Client Side Validation
Name:
Eric
Date:
2007-04-10 9:05:14 AM
Comment:
I can see the benefit of having the validation centralized in the business objects. This way you do not have to duplicate the validation code on the presentation page (WebForm/WinForm). But by doing this, we loose the client side validation that asp validators provide. This means that all validation needs a round trip to the server. So I guess there is a trade off, or should you still use simple validation for example like the requiredfiledvalidator that asp.net provides to limit round trips to the server?
|
Title:
Author Reply
Name:
Brian Mains
Date:
2007-04-06 11:39:06 AM
Comment:
Hello Joydip,
That is soon to be released, and I am working on one that utilizes Localization, and shows how that can be implemented in your validators.
Brian
|
Title:
Nice
Name:
Joydip
Date:
2007-04-06 10:40:16 AM
Comment:
Hi Brian,
This is a nice article. I liked it. But, what about building the custom validators?
-Joydip
|
|
Product Spotlight
|
|