Я боролся со следующей проблемой.
Я создал навигацию по категориям / подкатегориям UserControl и поместил это в div на MasterPage.
Этот элемент управления использует повторитель для построения списка категорий. В шаблоне у меня есть:
панель, которую вы можете включать / выключать. (развернуть / свернуть, как двухуровневое дерево).
второй повторитель внутри панели
ссылка для перехода на страницу категории (asp: гиперссылка)
у второго повторителя есть только ссылка в шаблоне товара.
Теперь каждый раз, когда я нажимаю на ссылку, этот элемент управления сбрасывается. Это означает, что если я разверну вторую категорию и перейду к одной из подкатегорий, этот список подкатегорий будет снова свернут (фактически весь элемент управления перерисовывается).
Есть ли способ, которым я все еще могу использовать отдельные страницы aspx, но не нужно каждый раз перезагружать пользовательский элемент управления навигацией или каким-либо образом возвращать навигацию в предыдущее состояние просмотра. То, что я пробовал до сих пор:
панель обновления на пользовательском контроле
панель обновлений на держателе содержимого
пытается восстановить предыдущую страницу просмотра состояния
<asp:Repeater ID="RptCategories" runat="server" OnItemCommand="RptCategories_ItemCommand" EnableViewState="true">
<ItemTemplate>
<asp:LinkButton runat="server" ID="BtnToggleSubcategories" CommandName="ToggleSubcategories"
CommandArgument='<%# Eval("Id") %>' Text="+" />
<asp:HyperLink runat="server" ID="LnkCategory" Text='<%# Eval("Name") %>' NavigateUrl='<%# Eval("Id", "~/Pages/ViewList.aspx?CatId={0}") %>' />
<asp:Panel runat="server" ID="PnlSubcategories" Visible="false" EnableViewState="true">
<asp:Repeater ID="RptSubcategories" runat="server" EnableViewState="true">
<HeaderTemplate><ul></HeaderTemplate>
<ItemTemplate>
<li><asp:HyperLink runat="server" ID="LnkSubcategory" Text='<%# Eval("Name") %>' NavigateUrl='<%# Eval("Id", "~/Pages/ViewList.aspx?SubcatId={0}") %>' /></li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
</asp:Panel>
<br />
</ItemTemplate>
</asp:Repeater>