Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > A way to refer to items in Session object without using Session directly

Reply
Thread Tools

A way to refer to items in Session object without using Session directly

 
 
Andy B
Guest
Posts: n/a
 
      05-29-2008
Is there a way to refer to things in Session object without calling Session
itself?



 
Reply With Quote
 
 
 
 
George Ter-Saakov
Guest
Posts: n/a
 
      05-29-2008
Yea,

Just keep it in both places.... Session and other container/place you will
use to get those things...
---------------------------------------------------------------------------
On a serious note..... What are you trying to do.
Will HttpContext.Current.Session help?
you can access Session object from your business logic without passing
Session around....If that is what you trying to avoid.

George.

"Andy B" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Is there a way to refer to things in Session object without calling
> Session itself?
>
>
>



 
Reply With Quote
 
 
 
 
Teemu Keiski
Guest
Posts: n/a
 
      05-29-2008
Hi,

if you intend to keep your component loosely coupled, so that it does not
require ASP.NET's session to exist (if you intend to use it in other types
of apps or in a web service etc), you can design so that you have a type in
the component library which represents the data the usual component in that
library needs. E.g create a type to abstract the concept of a session for
your components.

You can instantiate that object (session type) in ASP.NET, store it in
ASP.NEt's Session if needed, but when using components from the library, you
pass it(them) the session object so the component wouldn't need to do grabs
to the ASP.NET Session.

Some background why just HttpContext.Current.Session is a bad thing:
http://aspadvice.com/blogs/joteke/ar.../23/16785.aspx

--
Teemu Keiski
AspInsider, ASP.NET MVP
http://blogs.aspadvice.com/joteke
http://teemukeiski.net

"Andy B" <(E-Mail Removed)> wrote in message
news:%(E-Mail Removed)...
> Is there a way to refer to things in Session object without calling
> Session itself?
>
>
>



 
Reply With Quote
 
Andy B
Guest
Posts: n/a
 
      05-29-2008
I am trying to avoid having to do something like this every time I want an
object from Session:
((DataSet)Session["ContractDataSet"]).Tables["..."]...;
or:
DataSet ContractDataSet = (DataSet)Session["ContractDataSet"];
//...whatever with CongtractDataSet

Session["ContractDataSet"]=ContractDataSet;

I want a way to create and refer to just ContractDataSEt but have it linked
to Session["ContractDataSet"] as well as ContractDataSet. I just need the
code in VB 9.




"George Ter-Saakov" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Yea,
>
> Just keep it in both places.... Session and other container/place you will
> use to get those things...
> ---------------------------------------------------------------------------
> On a serious note..... What are you trying to do.
> Will HttpContext.Current.Session help?
> you can access Session object from your business logic without passing
> Session around....If that is what you trying to avoid.
>
> George.
>
> "Andy B" <(E-Mail Removed)> wrote in message
> news:%(E-Mail Removed)...
>> Is there a way to refer to things in Session object without calling
>> Session itself?
>>
>>
>>

>
>



 
Reply With Quote
 
dbgrick
Guest
Posts: n/a
 
      05-29-2008
You could make a wrapper class and create a property. The get and set for
the property will then call the session object:

public class MyDataClass
{

public static DataSet ContractDataSet
{
get
{
return (DataSet)Session["ContractDataSet"];
}
set
{
Session["ContractDataSet"] = value;
}
}

}
You might want to do some null checks as well.

Regards,
Rick Davis
DBG Software


"Andy B" wrote:

> I am trying to avoid having to do something like this every time I want an
> object from Session:
> ((DataSet)Session["ContractDataSet"]).Tables["..."]...;
> or:
> DataSet ContractDataSet = (DataSet)Session["ContractDataSet"];
> //...whatever with CongtractDataSet
>
> Session["ContractDataSet"]=ContractDataSet;
>
> I want a way to create and refer to just ContractDataSEt but have it linked
> to Session["ContractDataSet"] as well as ContractDataSet. I just need the
> code in VB 9.
>
>
>
>
> "George Ter-Saakov" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > Yea,
> >
> > Just keep it in both places.... Session and other container/place you will
> > use to get those things...
> > ---------------------------------------------------------------------------
> > On a serious note..... What are you trying to do.
> > Will HttpContext.Current.Session help?
> > you can access Session object from your business logic without passing
> > Session around....If that is what you trying to avoid.
> >
> > George.
> >
> > "Andy B" <(E-Mail Removed)> wrote in message
> > news:%(E-Mail Removed)...
> >> Is there a way to refer to things in Session object without calling
> >> Session itself?
> >>
> >>
> >>

> >
> >

>
>
>

 
Reply With Quote
 
Andy B
Guest
Posts: n/a
 
      05-29-2008
So this would be a static class that is maintained outside the bounds of the
page that uses it then? And I would probably put other methods/events in
this class that use the same session object?


"dbgrick" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> You could make a wrapper class and create a property. The get and set for
> the property will then call the session object:
>
> public class MyDataClass
> {
>
> public static DataSet ContractDataSet
> {
> get
> {
> return (DataSet)Session["ContractDataSet"];
> }
> set
> {
> Session["ContractDataSet"] = value;
> }
> }
>
> }
> You might want to do some null checks as well.
>
> Regards,
> Rick Davis
> DBG Software
>
>
> "Andy B" wrote:
>
>> I am trying to avoid having to do something like this every time I want
>> an
>> object from Session:
>> ((DataSet)Session["ContractDataSet"]).Tables["..."]...;
>> or:
>> DataSet ContractDataSet = (DataSet)Session["ContractDataSet"];
>> //...whatever with CongtractDataSet
>>
>> Session["ContractDataSet"]=ContractDataSet;
>>
>> I want a way to create and refer to just ContractDataSEt but have it
>> linked
>> to Session["ContractDataSet"] as well as ContractDataSet. I just need the
>> code in VB 9.
>>
>>
>>
>>
>> "George Ter-Saakov" <(E-Mail Removed)> wrote in message
>> news:(E-Mail Removed)...
>> > Yea,
>> >
>> > Just keep it in both places.... Session and other container/place you
>> > will
>> > use to get those things...
>> > ---------------------------------------------------------------------------
>> > On a serious note..... What are you trying to do.
>> > Will HttpContext.Current.Session help?
>> > you can access Session object from your business logic without passing
>> > Session around....If that is what you trying to avoid.
>> >
>> > George.
>> >
>> > "Andy B" <(E-Mail Removed)> wrote in message
>> > news:%(E-Mail Removed)...
>> >> Is there a way to refer to things in Session object without calling
>> >> Session itself?
>> >>
>> >>
>> >>
>> >
>> >

>>
>>
>>



 
Reply With Quote
 
Andy B
Guest
Posts: n/a
 
      05-29-2008
If all it was used for was to wrap around the Session, then it would be kind
of useless. Since the design and code of the wizard I am working on deals
with a lot of transactions between datasets and the frontend, I will need to
create other methods and properties to get the work done. Insdead of making
tons of senseless clutter inside the page, I can just make it inside a class
and then reference the class in the page code behind. Unless of course, that
isn't a good idea...


"Mark Rae [MVP]" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> "dbgrick" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
>
>> You could make a wrapper class and create a property.

>
> That will not prevent the Session object from actually being called,
> albeit behind the scenes - all it will do is create a completely
> unnecessary additional layer of code for no benefit whatsoever...
>
> If you want to use the Session cache, then you need to refer to it - no
> getting round that...
>
>
> --
> Mark Rae
> ASP.NET MVP
> http://www.markrae.net



 
Reply With Quote
 
Damien
Guest
Posts: n/a
 
      05-30-2008
On May 29, 11:12*pm, "Mark Rae [MVP]" <(E-Mail Removed)> wrote:
> "dbgrick" <(E-Mail Removed)> wrote in message
>
> news:(E-Mail Removed)...
>
> > You could make a wrapper class and create a property.

>
> That will not prevent the Session object from actually being called, albeit
> behind the scenes - all it will do is create a completely unnecessary
> additional layer of code for no benefit whatsoever...
>
> If you want to use the Session cache, then you need to refer to it - no
> getting round that...
>

It ensures a) that there's no typos anywhere where the same object is
being accessed, and b) that there's agreement at all points of access
on what the data type is. (a) could be achieved by introducing a
constant, but (b) could only be achieved in that case by searching the
codebase. It's a lot nicer if you're changing a datatype to do it
inside this wrapper class and then have the compiler tell you of any
problems with that.

Damien
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Print Pdf directly (without preview) from client side (using asp.net) AP No spam ASP .Net 5 10-06-2011 01:20 PM
Is there any way to append some items to List box, without retrieving all items through AJAX? Anjan Bhowmik ASP .Net 1 02-14-2008 09:02 PM
Any way to reorder how a datagrid is drawn (header/footer/items vs.header/items/footer)? Henrik ASP .Net Datagrid Control 1 07-06-2006 12:23 AM
Can I refer to members of an enumeration without using ::? Jason Heyes C++ 7 12-14-2004 11:50 AM
Preview image directly on PC, save directly to HD Patrick M. Digital Photography 3 01-07-2004 08:29 PM



Advertisments