Integrating BLL Validation with ObjectDataSource and Gridview

Discussion in 'ASP .Net' started by JimLad, Jan 26, 2010.

  1. JimLad

    JimLad Guest

    Hi,

    ASP.NET 3.5

    I've recently been struggling with BLL Validation and when and where I
    should do it.

    I have a Gridview using an ObjectDataSource. This is a standard thing
    that I'll be doing on loads of pages and I will be creating a
    template
    for this.

    Obviously I can validate in the Gridview_Updating event. However,
    nothing is typed at this point so I would have to type everything
    manually. Values are typed in ObjectDataSource_Updating, but by then
    I've lost the e.cancel function and would have to raise an exception
    to cancel.
    Returning to Gridview_Updating I can pass the typed values I need
    individually or I can pass the IOrderDictionary of values, newvalues
    or keys. However these are untyped and I would have to them type them
    in the BLL layer so I've rejected this option.

    Or I can Validate in the BLL layer in the Update function (called by
    UpdateMethod of the ObjectDataSource). I have a Generic List of
    validation failures to return and I also want to keep
    the entered values on the page, not refresh the page if there are
    validation problems. The only way to prevent the page from refreshing
    seems to be to return an exception to GridView_Updated. I could
    create
    a new Exception which contains the Validation Error Generic List. But
    I have always thought that Exceptions should not be raised for
    standard functionality like this?

    Basically I want to limit bespoke validation functionality to the BLL
    layer and not have to do manual typing on the UI layer. But I can't
    seem to find a way of doing that without raising exceptions.

    Any advice would be very welcome. If these are the only 2 options,
    which should I do? I realise it would take very little effort to type
    values manually on the UI side for each page, but I always like to
    standardise code where possible.

    James
    JimLad, Jan 26, 2010
    #1
    1. Advertising

  2. The problem is with the design, objectdatasource is not a Business layer.
    It's a provider that knows how to talk to the data store. If you had a true
    business layer, it would sit in between the gridview and the datasource. At
    that point, your problems would go away.

    >I could
    > create
    > a new Exception which contains the Validation Error Generic List. But
    > I have always thought that Exceptions should not be raised for
    > standard functionality like this?

    This is the absolute correct way to do this - use the exception mechanism,
    which represents a failed validation. This is a best practice. [This is also
    how dynamic data works with the entity model so you should pattern against
    this approach]. The idea is that if the user enters incorrect input, the
    Business layer should blow up and stop right there. An exception represents
    just that.

    No real good solution for the typing problem because of the tight coupling
    between the gridview and the objectdatasource container. you may have to get
    clever with some of the events that are exposed in the gridview and
    objectdatasource. Btw, binding a gridview to an objectdatasource is often
    done because it is easy for trivial situations. You start running into
    issues when the software you are building gets complicated.

    --
    Vapordan
    Shameless Author Plug
    ASP.NET 4 by Example only $20
    OWC Blackbook www.lulu.com/owc

    "JimLad" <> wrote in message
    news:...
    > Hi,
    >
    > ASP.NET 3.5
    >
    > I've recently been struggling with BLL Validation and when and where I
    > should do it.
    >
    > I have a Gridview using an ObjectDataSource. This is a standard thing
    > that I'll be doing on loads of pages and I will be creating a
    > template
    > for this.
    >
    > Obviously I can validate in the Gridview_Updating event. However,
    > nothing is typed at this point so I would have to type everything
    > manually. Values are typed in ObjectDataSource_Updating, but by then
    > I've lost the e.cancel function and would have to raise an exception
    > to cancel.
    > Returning to Gridview_Updating I can pass the typed values I need
    > individually or I can pass the IOrderDictionary of values, newvalues
    > or keys. However these are untyped and I would have to them type them
    > in the BLL layer so I've rejected this option.
    >
    > Or I can Validate in the BLL layer in the Update function (called by
    > UpdateMethod of the ObjectDataSource). I have a Generic List of
    > validation failures to return and I also want to keep
    > the entered values on the page, not refresh the page if there are
    > validation problems. The only way to prevent the page from refreshing
    > seems to be to return an exception to GridView_Updated. I could
    > create
    > a new Exception which contains the Validation Error Generic List. But
    > I have always thought that Exceptions should not be raised for
    > standard functionality like this?
    >
    > Basically I want to limit bespoke validation functionality to the BLL
    > layer and not have to do manual typing on the UI layer. But I can't
    > seem to find a way of doing that without raising exceptions.
    >
    > Any advice would be very welcome. If these are the only 2 options,
    > which should I do? I realise it would take very little effort to type
    > values manually on the UI side for each page, but I always like to
    > standardise code where possible.
    >
    > James
    Alvin Bruney - ASP.NET MVP, Feb 1, 2010
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Spam Survivor
    Replies:
    3
    Views:
    489
    Nick Kew
    Sep 15, 2003
  2. Roy

    BLL and DAL.

    Roy, Jun 15, 2006, in forum: ASP .Net
    Replies:
    10
    Views:
    17,562
    =?Utf-8?B?Q2hyaXM=?=
    Jun 16, 2006
  3. Stan SR

    BLL and WebService

    Stan SR, Nov 28, 2006, in forum: ASP .Net
    Replies:
    2
    Views:
    437
    Stan SR
    Nov 29, 2006
  4. Replies:
    0
    Views:
    372
  5. Tides

    ObjectDataSource not calling BLL

    Tides, Apr 25, 2008, in forum: ASP .Net
    Replies:
    3
    Views:
    376
    Tides
    Apr 28, 2008
Loading...

Share This Page