StrataFrame Forum

ASP.NET C# questions

http://forum.strataframe.net/Topic3767.aspx

By Scott Alexander - 10/22/2006

I like the concepts of this framework, but I'm having a few problems. First, I am declaring my business object in the applicationbasepage like this:

BusinessObject1 myBO = new BusinessObject1();

Whenever I go to a page in my app that inherits from ApplicationBasePage I cannot see the object I created above. Do I have a scoping issue or something?

Something else that is very frustrating is whenever I compile my business object it does not show up in my toolbox to allow me to drop it on a web form. Are we suppose to drop the business objects on Web Forms or do we reference it some other way?

A C# ASP.NET demo would certainly be helpful.

Any help is greatly appreciated.

Thanks,
Scott

 

By Trent L. Taylor - 10/22/2006

Scott,

Youa re really close but there is one thing that you need to change.  In the ApplicationBasePage you do not create a new instance of the BO...just decalre it.  The framework will automatically create and manage the session for you.  Which ties into you second question...ASP.NET inherantly does not support the same type of component structure as you are used to in WinForms.   So the BOs will not be dropped on any of the pages, the business objects are just declared in an ApplicationBasepage and then any page than inherits that APplicationBasePage will have access to those declared business objects.

So in your ApplicationBasePage, you BO declarations will look somthing like this:

Notice that there is no "New" statement.  Just define the BOs and the framework will handle the rest.

By Scott Alexander - 10/22/2006

Trent,

Thanks for the response. Do you have a code snipet in C#. I've tried declaring the object as you suggested (in C#) and it still doesn't seem to work. Just want to be sure I understand.

Thanks,

Scott

By Trent L. Taylor - 10/23/2006

Scott,

Are you defining your business objects in the same project as your web project?  If so, this could be a problem.  ASP.NET does not like to "play nice" with component classes defined within an ASP.NET project.  The best thing to do is create a Business Object Library and then place all of your business objects within that library.  Your ASP.NET app will then just reference the library and it will make things go much more smoothly.  If this doesn't work, I will be more than happy to get you a C# snippet.

By Scott Alexander - 10/23/2006

Trent,

I got it figured out. To answer your question, my Business Object library is a separate project from my application. I've got it referenced in my solution. In order to define my BO in the ApplicationBasePage I declare the following:

private BusinessObject1 _MyBO;

public BusinessObject1 MyBO

{

     get

       {

           return this._MyBO;

       }

    set

       {

           this._MyBO = value;

       }

}

This works well.

Thanks for your input.

Scott

By StrataFrame Team - 10/23/2006

Yes, the TypeEditor for the binding looks for public properties that are of a type that is inherited from BusinessLayer... it just so happens that when you define a Public field in VB with the WithEvents keyword, .NET creates a property behind the scenes... so when we use reflection within the type editor, it doesn't see it as a field, but a property.

So, always define your business objects as properties within the ApplicaitonBasePage and you'll be good to go.