Решение MaxCarey, похоже, работает хорошо, но последняя версия jQuery UI (1.10.4), похоже, имеет некоторые отличия. Правильное событие теперь не «изменено», а «активировано» (или «beforeActivate», если вы хотите отменить событие).
<asp:HiddenField runat="server" ID="hidAccordionIndex" Value="0" />
...
$(document).ready(function () {
var activeIndex = parseInt($("#<%=hidAccordionIndex.ClientID %>").val());
$("#accordion").accordion({
heightStyle: "content",
active: activeIndex,
activate: function (event, ui) {
var index = $(this).children('h3').index(ui.newHeader);
$("#<%=hidAccordionIndex.ClientID %>").val(index);
}
});
});
Я понял, что здесь я могу убедиться, что значение hidAccordionIndex установлено на правильное значение, но при обратной передаче оно возвращается в 0 независимо от того, что я пытаюсь. Я попытался установить пустую строку, как предложил Dave.Lebr1, но она все еще не сохраняется при обратной передаче.
Это должно оставаться доступным при обратной передаче, так как мое поле divAccordionIndex должно иметь ViewState (я проверил, что оно включено).
Кто-нибудь еще имел успех с этим? Это меню находится на моей главной странице, и оно отлично работает ... кроме этого.