This is bad, I know it

Following on form my post yesterday:
I have created a base class which is inherited by all my usercontrols.
The base class has the following above all the code blocks:
Public Shared intPageID as int32
This variable is then set in control A and read back and displayed *correctly* in control B.
Great, works fine, both controls on the same page set and reads back the right value...
I cannot define a public property on the aspx page containing the two controls for reasons I can't go into here...
...but, as I am aware, the share property sets the variable like an application var, one var for all users of the site. Not good for a multiuser envrionment. Even though every hit to any page in the site will set this value to an ID only specific to that page viewed at that point in time, this is still not the "best practice" way of doing it is it?
If I remove the "share" leaving:
Public intPageID as int32
The var is still accessible across my controls but in control A where the value is set, that's ok, but control B has the value set back to 0 again, now, my lack of formal training is showing up here. How do I expose this variable to all my classes (usercontrols) which once set, is set until the user closes the brower/moves to the next page...
...and no, I don't want to use a session if I can get away with it
Ta.