By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
458,125 Members | 1,479 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 458,125 IT Pros & Developers. It's quick & easy.

User Control, @OutputCache, and varying the cache by property value

P: n/a
Question:
If I have an ASP.NET User Control which defines/exposes a property that the
page can use to specify a mode or data subset for the control to use, is
there a way to tell the @OutputCache directive to vary its cache based on
that property value?

I.e., I have:

<my:control runat="server" id="mcOne" Flag="One" />
<my:control runat="server" id="mcTwo" Flag="Two" />

where Flag is a public property of the code-behind class (whose value
affects the display output), and I want the Flag="One" instance to
output-cache separately from the Flag="Two" instance.

So far, the control seems to output-cache only one version of the control,
and all successive displays of the control use that cached version,
regardless of the Flag attribute value.

Other notes:

The @OutputCache directive's VaryByParam attribute works only with GET and
POST values. (I did try VaryByParam="Flag" anyway, to no effect.)

Setting the @OutputCache directive's Shared attribute to "False" solves the
problem (by causing each usage of the control to cache separately), but has
the additional effect of requiring separate initial-loads and caches for
each page on which the control appears. Since I currently only have two or
three possible values of the Flag attribute, but these controls may appear
on many pages (and there is some work invovled in the initial load of the
data for this control), this is not ideal.

There doesn't seem to be any sort of VaryByProperty attribute for
@OutputCache (which surprises me). So...

Any other ideas?

- Tom Kiefer
thogek @ earthlink . net
Nov 18 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Have you looked at VaryByCustom?

--
venlig hilsen / with regards
anders borum
--
Nov 18 '05 #2

P: n/a
Yes, but I'm unclear on how that construct would be able to access anything
specific to the control being cached.

From
http://msdn.microsoft.com/library/en...utputCache.asp
and
http://msdn.microsoft.com/library/en...tringTopic.asp, I
see VaryByCustom allowing me to specify arbitrary rules that can act on the
HttpContext of the current request, but not on details within the control
itself (such as the value of a given property).

Unless I'm missing something....

- Tom Kiefer
thogek @ earthlink . net
"Anders Borum" <na@na.na> wrote in message
news:OE*************@TK2MSFTNGP12.phx.gbl...
Have you looked at VaryByCustom?

--
venlig hilsen / with regards
anders borum
--

Nov 18 '05 #3

P: n/a
I'm guessing from the lack of response that there's no ready way to do what
I'm looking for. :-(

If anyone from Microsoft is reading this, is there any indication that any
future versions of ASP.NET might support what I attempt to describe below?

- Tom Kiefer
thogek @ earthlink . net
"Tom Kiefer" <th****@earthlink.net> wrote in message
news:OY*************@tk2msftngp13.phx.gbl...
Question:
If I have an ASP.NET User Control which defines/exposes a property that the page can use to specify a mode or data subset for the control to use, is
there a way to tell the @OutputCache directive to vary its cache based on
that property value?

I.e., I have:

<my:control runat="server" id="mcOne" Flag="One" />
<my:control runat="server" id="mcTwo" Flag="Two" />

where Flag is a public property of the code-behind class (whose value
affects the display output), and I want the Flag="One" instance to
output-cache separately from the Flag="Two" instance.

So far, the control seems to output-cache only one version of the control,
and all successive displays of the control use that cached version,
regardless of the Flag attribute value.

Other notes:

The @OutputCache directive's VaryByParam attribute works only with GET and
POST values. (I did try VaryByParam="Flag" anyway, to no effect.)

Setting the @OutputCache directive's Shared attribute to "False" solves the problem (by causing each usage of the control to cache separately), but has the additional effect of requiring separate initial-loads and caches for
each page on which the control appears. Since I currently only have two or three possible values of the Flag attribute, but these controls may appear
on many pages (and there is some work invovled in the initial load of the
data for this control), this is not ideal.

There doesn't seem to be any sort of VaryByProperty attribute for
@OutputCache (which surprises me). So...

Any other ideas?

- Tom Kiefer
thogek @ earthlink . net

Nov 18 '05 #4

P: n/a
Just a guess-- Have you looked at VaryByControl?

http://msdn.microsoft.com/library/de...parameters.asp

Thanks,

Eric Lawrence
Program Manager
Assistance and Worldwide Services

This posting is provided "AS IS" with no warranties, and confers no rights.
"Tom Kiefer" <th*******@earthlinknot.net> wrote in message
news:OM**************@TK2MSFTNGP12.phx.gbl...
I'm guessing from the lack of response that there's no ready way to do what I'm looking for. :-(

If anyone from Microsoft is reading this, is there any indication that any
future versions of ASP.NET might support what I attempt to describe below?

- Tom Kiefer
thogek @ earthlink . net
"Tom Kiefer" <th****@earthlink.net> wrote in message
news:OY*************@tk2msftngp13.phx.gbl...
Question:
If I have an ASP.NET User Control which defines/exposes a property that

the
page can use to specify a mode or data subset for the control to use, is
there a way to tell the @OutputCache directive to vary its cache based on that property value?

I.e., I have:

<my:control runat="server" id="mcOne" Flag="One" />
<my:control runat="server" id="mcTwo" Flag="Two" />

where Flag is a public property of the code-behind class (whose value
affects the display output), and I want the Flag="One" instance to
output-cache separately from the Flag="Two" instance.

So far, the control seems to output-cache only one version of the control, and all successive displays of the control use that cached version,
regardless of the Flag attribute value.

Other notes:

The @OutputCache directive's VaryByParam attribute works only with GET and POST values. (I did try VaryByParam="Flag" anyway, to no effect.)

Setting the @OutputCache directive's Shared attribute to "False" solves

the
problem (by causing each usage of the control to cache separately), but

has
the additional effect of requiring separate initial-loads and caches for
each page on which the control appears. Since I currently only have two

or
three possible values of the Flag attribute, but these controls may appear on many pages (and there is some work invovled in the initial load of the data for this control), this is not ideal.

There doesn't seem to be any sort of VaryByProperty attribute for
@OutputCache (which surprises me). So...

Any other ideas?

- Tom Kiefer
thogek @ earthlink . net


Nov 18 '05 #5

P: n/a
According to
http://msdn.microsoft.com/library/en...utputCache.asp
and
http://msdn.microsoft.com/library/en...parameters.asp,
this sounds like VaryByControl directs the control to tie its caching
conditions (in a way that is unclear to me) to those of child control whose
ID matches the value of the VaryByControl attribute -- not quite what I'm
looking for. (I suppose that, with some work, I might be able to kludge
this into what I want, but...)

I'm looking for a way to direct the control to cache itself separately for
each value of an arbitrary specified property of that control. Sort of a
VaryByProperty="Flag" which would cause the control to be cached separately
for each value of the control's Flag property, as specified in the control's
HTML declaration (i.e., separately for Flag="One", Flag="Two", etc.).

I'm rather suprised that a VaryByProperty attribute of the @OutputCache
directive does not already exist (whether by that name or some other).

Again, unless I'm completely misunderstanding....

- Tom Kiefer
thogek @ earthlink . net
"Eric Lawrence [MSFT]" <e_********@hotmail.com> wrote in message
news:uJ*************@tk2msftngp13.phx.gbl...
Just a guess-- Have you looked at VaryByControl?

http://msdn.microsoft.com/library/de...parameters.asp
Thanks,

Eric Lawrence
Program Manager
Assistance and Worldwide Services

This posting is provided "AS IS" with no warranties, and confers no rights.

"Tom Kiefer" <th*******@earthlinknot.net> wrote in message
news:OM**************@TK2MSFTNGP12.phx.gbl...
I'm guessing from the lack of response that there's no ready way to do

what
I'm looking for. :-(

If anyone from Microsoft is reading this, is there any indication that any
future versions of ASP.NET might support what I attempt to describe below?
- Tom Kiefer
thogek @ earthlink . net
"Tom Kiefer" <th****@earthlink.net> wrote in message
news:OY*************@tk2msftngp13.phx.gbl...
Question:
If I have an ASP.NET User Control which defines/exposes a property that
the
page can use to specify a mode or data subset for the control to use,
is there a way to tell the @OutputCache directive to vary its cache based

on that property value?

I.e., I have:

<my:control runat="server" id="mcOne" Flag="One" />
<my:control runat="server" id="mcTwo" Flag="Two" />

where Flag is a public property of the code-behind class (whose value
affects the display output), and I want the Flag="One" instance to
output-cache separately from the Flag="Two" instance.

So far, the control seems to output-cache only one version of the control, and all successive displays of the control use that cached version,
regardless of the Flag attribute value.

Other notes:

The @OutputCache directive's VaryByParam attribute works only with GET and POST values. (I did try VaryByParam="Flag" anyway, to no effect.)

Setting the @OutputCache directive's Shared attribute to "False" solves the
problem (by causing each usage of the control to cache separately),
but
has
the additional effect of requiring separate initial-loads and caches
for each page on which the control appears. Since I currently only have

two or
three possible values of the Flag attribute, but these controls may

appear on many pages (and there is some work invovled in the initial load of the data for this control), this is not ideal.

There doesn't seem to be any sort of VaryByProperty attribute for
@OutputCache (which surprises me). So...

Any other ideas?

- Tom Kiefer
thogek @ earthlink . net

Nov 18 '05 #6

P: n/a
I believe VaryByControl is what you're looking for. VayByControl should
accept the name of a property of that control and you'll get different cache
variations depending on the value set in the prop.

--
Corey O'Mara
MCSD.NET, MCT

"Tom Kiefer" <th*******@earthlinknot.net> wrote in message
news:uk**************@TK2MSFTNGP10.phx.gbl...
According to
http://msdn.microsoft.com/library/en...utputCache.asp
and
http://msdn.microsoft.com/library/en...parameters.asp, this sounds like VaryByControl directs the control to tie its caching
conditions (in a way that is unclear to me) to those of child control whose ID matches the value of the VaryByControl attribute -- not quite what I'm
looking for. (I suppose that, with some work, I might be able to kludge
this into what I want, but...)

I'm looking for a way to direct the control to cache itself separately for
each value of an arbitrary specified property of that control. Sort of a
VaryByProperty="Flag" which would cause the control to be cached separately for each value of the control's Flag property, as specified in the control's HTML declaration (i.e., separately for Flag="One", Flag="Two", etc.).

I'm rather suprised that a VaryByProperty attribute of the @OutputCache
directive does not already exist (whether by that name or some other).

Again, unless I'm completely misunderstanding....

- Tom Kiefer
thogek @ earthlink . net
"Eric Lawrence [MSFT]" <e_********@hotmail.com> wrote in message
news:uJ*************@tk2msftngp13.phx.gbl...
Just a guess-- Have you looked at VaryByControl?

http://msdn.microsoft.com/library/de...parameters.asp

Thanks,

Eric Lawrence
Program Manager
Assistance and Worldwide Services

This posting is provided "AS IS" with no warranties, and confers no

rights.


"Tom Kiefer" <th*******@earthlinknot.net> wrote in message
news:OM**************@TK2MSFTNGP12.phx.gbl...
I'm guessing from the lack of response that there's no ready way to do

what
I'm looking for. :-(

If anyone from Microsoft is reading this, is there any indication that any future versions of ASP.NET might support what I attempt to describe below?
- Tom Kiefer
thogek @ earthlink . net
"Tom Kiefer" <th****@earthlink.net> wrote in message
news:OY*************@tk2msftngp13.phx.gbl...
> Question:
> If I have an ASP.NET User Control which defines/exposes a property that the
> page can use to specify a mode or data subset for the control to use, is
> there a way to tell the @OutputCache directive to vary its cache
based
on
> that property value?
>
> I.e., I have:
>
> <my:control runat="server" id="mcOne" Flag="One" />
> <my:control runat="server" id="mcTwo" Flag="Two" />
>
> where Flag is a public property of the code-behind class (whose
value > affects the display output), and I want the Flag="One" instance to
> output-cache separately from the Flag="Two" instance.
>
> So far, the control seems to output-cache only one version of the

control,
> and all successive displays of the control use that cached version,
> regardless of the Flag attribute value.
>
> Other notes:
>
> The @OutputCache directive's VaryByParam attribute works only with

GET and
> POST values. (I did try VaryByParam="Flag" anyway, to no effect.)
>
> Setting the @OutputCache directive's Shared attribute to "False" solves the
> problem (by causing each usage of the control to cache separately), but has
> the additional effect of requiring separate initial-loads and caches for > each page on which the control appears. Since I currently only have two or
> three possible values of the Flag attribute, but these controls may

appear
> on many pages (and there is some work invovled in the initial load

of the
> data for this control), this is not ideal.
>
> There doesn't seem to be any sort of VaryByProperty attribute for
> @OutputCache (which surprises me). So...
>
> Any other ideas?
>
> - Tom Kiefer
> thogek @ earthlink . net
>


Nov 18 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.