ASP.NET Ajax History не работает правильно - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть приложение ASP.NET/C#.

Приложение содержит PlaceHolder внутри UpdatePanel .

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="LinkButton1" EventName="Click"/>    
        <asp:AsyncPostBackTrigger ControlID="LinkButton2" EventName="Click"/>
        <asp:AsyncPostBackTrigger ControlID="LinkButton3" EventName="Click"/>
    </Triggers>
    <ContentTemplate>
        <asp:PlaceHolder ID="PlaceHolder1" runat="server" Visible="false">
        </asp:PlaceHolder>
    </ContentTemplate>
</asp:UpdatePanel>

В основном, я загружаю элементы управления в заполнитель в зависимости от того, что LinkButton был нажат с помощью функции

    LoadControls("ControlName");

Я хочу реализовать возможность для пользователя использовать Кнопка возврата браузера для того, чтобы перемещаться по элементам управления. поэтому я использовал AJAX History следующим образом:

Я сохраняю текущий идентификатор элемента управления в переменной сеанса

Session["current"]

Я включаю History в scriptmanager и добавляю обработчик событий

<asp:ScriptManager ID="ScriptManager" runat="server" EnableHistory="True" onnavigate="ScriptManager_Navigate" />

(обработчик события будет описан ниже) Сначала я создам новую точку истории в обработчике событий кнопок Link (все они используют один и тот же обработчик)

string ControlId=Session["current"].ToString();

if (ScriptManager.IsInAsyncPostBack && !ScriptManager.IsNavigating)
{
    ScriptManager.AddHistoryPoint("Hist", ControlId);
}

затем в Scriptmanager обработчик навигации

    protected void ScriptManager_Navigate(object sender, HistoryEventArgs e)
    {
        string Controlid = "";
        if (e.State["index"] != null)
        {
            Controlid = e.State["Hist"].ToString();
            LoadControls(Controlid );
        }
    }

Когда я загружаю элементы управления, я могу перемещаться вперед и назад, и все работает нормально

Вот проблема:

1) первая проблема

Первый раз, когда я нажимаю «Назад». история возвращает 2 шагов, а не один (после этого она работает нормально.) Как будто последняя история не сохраняется.

2) вторая проблема

После «Backing» на первом шаге я могу сделать дополнительный «Back», где e.State [«Hist»] будет нулевым и выдаст мне ошибку. как отключить кнопку «Назад в браузере», когда значение e.State [«Hist»] будет нулевым?

Большое спасибо за любую помощь. Я надеюсь, что я был ясен.

Если вам нужна дополнительная информация / код, я с радостью предоставлю их

1 Ответ

0 голосов
/ 14 февраля 2012

Неважно.это была просто ошибка.сеанс ["Текущий"] сохранял предыдущий элемент управления, а не текущий.Это сейчас исправлено.Я оставлю этот вопрос, если кому-то понадобится небольшой пример для создания истории AJAX.

...