У меня есть это поле в моем классе сеанса:
public bool IsCartRecentlyUpdated
{
get
{
if (this.session["IsCartRecentlyUpdated"] != null)
{
return (bool)this.session["IsCartRecentlyUpdated"];
}
else
{
this.session["IsCartRecentlyUpdated"] = false;
return (bool)this.session["IsCartRecentlyUpdated"];
}
}
set
{
this.session["IsCartRecentlyUpdated"] = value;
}
}
Всякий раз, когда пользователь добавляет продукт в корзину, я помещаю это значение в значение true:
public void AddToCart(Product product, int quantity)
{
IsCartRecentlyUpdated = true;
//other code for updating the cart
}
Добавление продукта в корзину делает обратную передачу, поэтому я могу показать сообщение ( "g: продукт, добавленный успешно" ) в Page_Load на странице общего мастерства, где находится корзина для покупок, когда продукт имеет просто добавлен в корзину:
protected void Page_Load(object sender, EventArgs e)
{
if (this.sessionsUtil.IsCartRecentlyUpdated)
{
this.lblCartWarning.Text = (string)GetLocalResourceObject("CartWarning");
imgCardLogos.Visible = false;
}
else
{
this.lblCartWarning.Text = String.Empty;
imgCardLogos.Visible = true;
}
//other code
//put it back to false to not show the message each time the page is loaded
this.sessionsUtil.IsCartRecentlyUpdated = false;
}
Ну, этот код работает отлично локально, но на сервере он не отображает сообщение после добавления продукта в корзину, а во второй загрузке страницы... (Я предполагаю, что на сервере как-то загружается страница перед обновлением сеанса var - крайне странно)
Знаешь почему? Я не вижу никаких проблем в коде...
Странные проблемы, подобные этому, могут быть проще решить с помощью службы IIS express http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx