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)
wrote:
> 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
>
> On Jul 30, 12:18 pm, bruce barker <nos...@nospam.com> wrote:
>> 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)
>>
>> hardi...@hotmail.com wrote:
>>> 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
>
>