Хранение обратной передачи ActiveTabIndex TabContainer - PullRequest
0 голосов
/ 02 августа 2011

Я часто использую элемент управления TabContainer AJAX Control Toolkit в своем приложении, и требование к приложению - хранить активную вкладку в сеансе.Чтобы сделать это в настоящее время, у меня есть вкладки в UpdatePanel, и я выполняю обратную передачу, чтобы сохранить активный индекс вкладки в сеансе при изменении вкладок.Это медленная операция, поскольку страница довольно интенсивна, поэтому она не идеальна.Есть ли альтернативы этому?Возможно, используете веб-сервис для хранения сеанса без обратной записи?

1 Ответ

4 голосов
/ 02 августа 2011

Самый простой способ - использовать PageMethod ScriptManager.

1 Включить методы страницы

<asp:ScriptManager runat="server" EnablePageMethods="true"></asp:ScriptManager>

2 Создать метод страницы в aspx-странице, который будет получать фактическую информацию о вкладке

  [WebMethod]
  public static void SaveCurrentTab(string controlId, int currentTabIndex)
  {
    // save data to session
  }

3 Создание обработчика js-функции для отправки фактических данных на сервер

<script type="text/javascript">

    function clientActiveTabChanged(sender, args) {

        PageMethods.SaveCurrentTab(sender.get_id(), sender.get_activeTabIndex());
    }

</script>

4 Присоединение js-обработчика к TabContainer

<ajaxToolkit:TabContainer ID="TabContainer1" runat="server" OnClientActiveTabChanged="clientActiveTabChanged">
    <ajaxToolkit:TabPanel ID="TabPanel1" runat="server" HeaderText="Test1">
        <ContentTemplate>Test1</ContentTemplate>
    </ajaxToolkit:TabPanel>
    <ajaxToolkit:TabPanel ID="TabPanel2" runat="server" HeaderText="Test2">
        <ContentTemplate>Test2</ContentTemplate>
    </ajaxToolkit:TabPanel>
    <ajaxToolkit:TabPanel ID="TabPanel3" runat="server" HeaderText="Test3">
        <ContentTemplate>Test3</ContentTemplate>
    </ajaxToolkit:TabPanel>
</ajaxToolkit:TabContainer>

PS Существует альтернативное решение - сохранение данных на клиентесторона в cookie .

...