Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / July 2007

Tip: Looking for answers? Try searching our database.

Handling validation errors on the page level

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
hardieca@hotmail.com - 30 Jul 2007 16:50 GMT
Hi,

I've created an n-tier app where validation rules reside in the
business layer. When a webform is saved, a business object examines
its state, and if some property is invalid, throws a custom exception
(ValidationException)

The exception bubbles up to the UI where it gets trapped:

Private Sub Page_Error(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Error
       Dim ctx As HttpContext = HttpContext.Current

       Dim exception As Exception = ctx.Server.GetLastError()

       If TypeOf (exception) Is ValidationException Then
           Me.txtErrorMessages.Text = exception.message
           ctx.Server.ClearError()
       End If
End Sub

The exception is being successfully caught, but at the end of the
process I'm served with an empty page. What I would like to have
happen is the page reloads with all the form's information in addition
to a textbox being populated with the exception's message. I tried
using response.redirect(), but of course the textbox does not get
populated.

I'd rather not redirect the user to an error page, I want them to be
able to fix the validation errors on the form and continue on from
there. What's the best way to tackle this?

Regards,

Chris
bruce barker - 30 Jul 2007 17:18 GMT
just create a custom validator and add to page.

    CustomValidator cv = new CustomValidator();
    cv.IsValid = false;
    cv.ErrorMessage = "my error";
    cv.Visible = true;
    cv.Display = ValidatorDisplay.None;
    this.Form.Control.Add(cv);

-- bruce (sqlwork.com)

> Hi,
>
[quoted text clipped - 31 lines]
>
> Chris
hardieca@hotmail.com - 30 Jul 2007 17:42 GMT
Thanks for the response, but I'm still getting served an empty page.
My handler now looks like this:

Private Sub Page_Error(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Error
       Dim ctx As HttpContext = HttpContext.Current

       Dim exception As Exception = ctx.Server.GetLastError()

       If TypeOf (exception) Is ApplicationException Then
           Dim cv As New CustomValidator()
           cv.IsValid = False
           cv.ID = "myCV"
           cv.ErrorMessage = Exception.Message
           cv.Visible = True
           cv.Display = ValidatorDisplay.None
           Me.Form.Controls.Add(cv)
       End If

       ' --------------------------------------------------
       ' To let the page finish running we clear the error
       ' --------------------------------------------------
       ctx.Server.ClearError()

   End Sub

I would really like to figure out a way to validate and preserve the
form information in the Page_Error handler because I intend to have
the handler inherited by every page that has a form on it. I would
rather have this validation check performed in the Page_Error of the
base page class all my pages inherit from rather than have a Try/Catch
block on every page. Is there any way to do this?

Chris

> just create a custom validator and add to page.
>
[quoted text clipped - 43 lines]
>
> > Chris
bruce barker - 30 Jul 2007 21:07 GMT
if the Page Error event fires, page processing is cancelled. you are
supposed to redirect to the error page of your choice. clearing the
errors does not restart page processing.

you should be catching your BI validation errors in the calling method,
not at the page level.

-- bruce (sqlwork.com)

> Thanks for the response, but I'm still getting served an empty page.
> My handler now looks like this:
[quoted text clipped - 69 lines]
>>> Regards,
>>> Chris

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.