ページ上の 2 つの異なるナビゲーション メニューが、それぞれ別のユーザー コントロールにあります。2 つのメニューのメニュー項目は、同じページに移動できます。トップメニューにはいくつかの jQuery アニメーションがあり、左メニューにはありません。
問題は、アンカータグがリピーターにあり、リピーターがユーザーコントロールにある場合に、ナビゲーションメニューのどのアンカータグがポストバックを作成したかをどのように取得できるかです(アンカータグは動的に作成されます)。問題は、トップメニューのユーザーコントロールのコードビハインドが実行され、hiddenfields のいくつかの値が設定されるため、jQuery アニメーションはトップメニューに対して適切に実行されますが、左メニューがクリックされたときに実行されず、トップメニューのコードビハインドで隠しフィールドが設定されます。そのため、2 つのメニューを区別する方法を理解する必要があります。
リピーターのマークアップは次のとおりです。
<asp:Repeater runat="server" ID="RightSide">
<HeaderTemplate><ul></HeaderTemplate>
<ItemTemplate>
<li data-type="<%# ((Item)Container.DataItem).HasChildren ? "dropdown" : "link" %>" class="<%# ((Item)Container.DataItem).HasChildren ? "dropdown" : "link" %>">
<a href='<%# GetLink(((Item)Container.DataItem),"MenuLink") %>'><%#((Item)Container.DataItem)["MenuTitle"] %></a>
</li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>
TopMenu .cs コード:
public partial class TopMenu
{
private ID _homeId = new ID("{110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9}");
protected void Page_Load(object sender, EventArgs e)
{
RightSide.DataSource = GetMultiList("Right side", RootItem);
RightSide.DataBind();
***HERE I NEED TO MAKE THE CHECK.
So the code below should only run if the postback came from the topmenu***
var sectionItem = GetAncestorOrDefault(CurrentItem);
Sitecore.Data.Database context = Sitecore.Context.Database;
Sitecore.Data.Items.Item homeItem = context.GetItem("/sitecore/content/home");
List<Item> items = new List<Item>();
Sitecore.Data.Fields.MultilistField multilistField = homeItem.Fields["Right Side"];
foreach (string id in multilistField)
{
Sitecore.Data.Items.Item multiItem = Sitecore.Context.Database.Items.GetItem(id);
if (multiItem.HasChildren)
{
items.Add(multiItem);
}
}
foreach (Item item in items)
{
if (item.Name.Equals(sectionItem.Name))
{
hiddenAttr.Value = sectionItem.Name;
break;
}
else
{
hiddenAttr.Value = String.Empty;
}
}
}
}
私は eventtarget を試しましたが、それは常に null であり、コードビハインドでは値が常に "" である非表示フィールドでもあります。私はアイデアがありません...
必要に応じて、さらにコードを投稿します。
前もって感謝します!
オルヴァル