У меня есть страница Searchbook.aspx, у которой есть 3 выпадающих списка и один элемент управления ретранслятора, у которых есть кнопка, когда я перехожу на другую страницу с помощью этой кнопки на другую страницу. Когда я нажимаю кнопку "Назад" первой страницы браузера, вы получаете значения по умолчанию вместо найденных значений. Я хочу восстановить найденные значения.
Если вы хотите восстановить найденные значения на кнопке браузера, то есть два пути решения.
Сохраняйте значения фильтров, выбранные пользователем в ViewState. => В этом случае всегда связывайте данные, реализуя условия, которые возникают из viewstate.
Или сохраните значения для данных фильтра в строке запроса. => В этом случае, когда пользователь выбрал критерии фильтра, поместите значения в строку запроса и привяжите данные, поставив условие со значением, полученным из строки запроса URL.
Оба вышеуказанных процесса могут решить вашу цель, но вторая будет эффективной и быстрой, так как значения в Viewstate будут замедлять страницу.
Пожалуйста, дайте мне знать, если я не смогу правильно вас решить.
Обновление. Вы можете использовать метод Viewstate при использовании панели обновления и использовать строку запроса, чтобы обновить страницу.
Viewstate аналогичен использованию переменной Session, см. Ниже код.
Добавить значение в viewstate
ViewState.Add("filter1", DropDownList1.SelectedValue);
Получить значение из viewstate
string getvalue = ViewState ["filter1"]. ToString();
Поэтому, когда после выбора критериев фильтра, когда вы нажимаете кнопку "Отправить кнопку", заданное значение в режиме просмотра и на загрузке страницы получает одинаковое значение и связывает ваш элемент управления с использованием этих значений.
Вы можете включить историю браузера для запросов панели обновления, установив переключатель EnableHistory=true
в ScriptManager
.
Вот пример кода, который может помочь...
<asp:ScriptManager ID="scm" runat="server"
EnableHistory="true"
OnNavigate="scm_Navigate"
/>
<div>
<asp:Button ID="btnSubmit" runat="server" Text="Click Me!"
onclick="btnSubmit_Click" />
<asp:UpdatePanel ID="upl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lblTime" runat="server" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnSubmit" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
UPDATE Вы также можете использовать этот метод для добавления точки истории в браузере. http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.addhistorypoint(v=vs.100).aspx
Возможно, этот ответ на SOF также может помочь... qaru.site/questions/1279412/...
UPDATE 2 Это сообщение в блоге от Scott Gu суммирует все это... http://weblogs.asp.net/scottgu/Tip_2F00_Trick_3A00_-Enabling-Back_2F00_Forward_2D00_Button-Support-for-ASP.NET-AJAX-UpdatePanel