Предположим, у нас есть две страницы: pageX.aspx и страницаY.aspx. На этих страницах используется главная страница в верхней части браузера, где у пользователя есть несколько вариантов изменения языка сайта. Эти языковые варианты представлены в виде кнопок изображения (флаги страны), но они не используют свойство PostbackUrl. Вместо этого они просто используют обработчики событий. Один такой обработчик изображений:PostbackUrl относительно основных страниц
protected void imgbtnEnglish_Click(object sender, ImageClickEventArgs e)
{
HttpCookie aCookie = new HttpCookie("language");
aCookie.Value = "en-US";
aCookie.Expires = DateTime.Now.AddDays(365);
Response.Cookies.Add(aCookie);
Response.Redirect(Request.RawUrl);
}
pageX.aspx содержит изображение кнопки, которая имеет свойство PostbackUrl="pageY.aspx"
. Единственная цель этой кнопки изображения - просто взять нас на pageY.aspx.
При нажатии этой кнопки, как и ожидалось, мы принимаем pageY.aspx.
Теперь вот для меня загадка: когда я нажимаю НАЗАД в браузере (не управления или что-нибудь, просто старая добрая кнопка назад), я возвращаюсь к pageX.aspx, который отлично ... кроме, казалось бы, главная страница наверху думает, что я все еще на страницеY.aspx! Потому что, хотя я сейчас вернулся на pageX.aspx на моем экране, щелкнув любой из флагов наверху, верните меня на pageY.aspx!
Единственное, что я могу логически вывести, это то, что по какой-то причине, поскольку это PostbackUrl, и он отправляет форму на сервер, «возврат» распознается локально только для отправленной формы, а не для всего (включая главную страницу). Поэтому, перейдя «назад», я нахожусь только «назад» только в форме, а не в форме И главной странице.
Что я сделал, чтобы решить мою проблему, чтобы сделать изображение кнопки, которая принимает меня pageY.aspx не использовать PostBackUrl, но вместо этого нажмите обработчик события с одной строкой: Response.Redirect ("Пейджи. ASPX "); Когда я это делаю, он работает нормально.
Я хочу понять, почему это происходит, а также если решение обработчика событий Click является лучшим решением/правильным решением вместо использования свойства PostbackUrl.
Вы используете браузер Opera? –
Hah, действительно, я! .. Я предполагаю, что вы спросили, что это может быть специфическая для браузера? – CptSupermrkt
Да, это зависит от браузера. Полная информация о том, почему я думал, что Opera находится в моем ответе ниже –