Hello!
I am having a problem with the @OutputCache page directive and Web
browser Back Buttons.
Problem:
After setting <%@ OutputCache Location="None" %> on my pages I get the
"Warning! Page has expired" error message, when pushing the Back
Button in my Web browser.
After reading several posts on the subject I found a solution to the
problem.
Solution:
Enable SmartNavigation on the page I am browsing back to. This
solution actually work, which is good.
But I am not completely satisfied. I have worked with smart navigation
before, and smart navigation has a tendency to lead to problems (at
least when I use it...), and my original idea seemed to good to
surender to smart navigation.
Background:
I am implementing a classic Web Shop, and I have the shopping cart
implemented as a UserControl. The cart can be added to (or deleted
from) on different pages in the Shop. If the OutputCache is not set to
Location="None", Page_Load doesn't fire when you push the Back Button
(since the page is cached), and if you have added to the cart and push
back, changes to the cart is not visible to the user (especially if
you switch to a different page) since Page_Load is not fired, and the
cart can't be rebound to reflect the changes to the cart.
(I have developed a framework similar to the UIP Application Block
which works very well and keeps state updated between pages)
I thought the purpose of the Location="None" setting was to trigger
the Page_Load event on the pages, not to trigger a pointless error
message to the user. Pointless beacuse if the user repeatedly push the
back button, the desired page is shown (with cart updated).
Questions:
Is there a way to work around my "problem" without using the
SmartNavigation feature?
And can someone explain why the Location="None" setting isn't working
like I wan't it to, I mean, I think my desired behavior is pretty
straight forward?
Final question: Is there a better way? :)
/ Johan Nedin