2

次のサイトマップが定義されています。

<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="" title="Root" roles="*">
    <siteMapNode url="~/Default.aspx" title="Home" roles="*" />
    <siteMapNode url="~/ProjectList.aspx" title="Projects" roles="*">
      <siteMapNode url="~/ProjectOverview.aspx" title="Project Overview"  roles="*" />
      <siteMapNode url="~/ProjectViewCalls.aspx" title="View Calls" roles="*" />
    </siteMapNode>
    <siteMapNode url="~/Configuration.aspx" title="Configuration" roles="Administrator" />
    <siteMapNode url="~/YourAccount.aspx" title="Your Account" roles="Administrator" />
    <siteMapNode url="~/Logout.aspx" title="Logout" roles="*" />
  </siteMapNode>
</siteMap>

これをメニュー コントロールに次のように表示する必要があります。プロジェクト | 構成 | あなたのアカウント | ログアウト。

これは正しく機能していますが、ProjectOverview および ProjectViewCalls ページに移動するとclass="level1 selected"、リスト項目の選択された属性が失われます。ユーザーが現在サイトのどの領域にいるかを示すことができるようにしたいと考えています。

これは可能ですか?

4

2 に答える 2

0

これがあなたが探しているものであるかどうかはわかりませんが、これを行う簡単な方法があります。MenuItemDataBoundイベントをメニューコントロールに追加し、イベントで次のコードを使用します。

        if(e.Item.Selected)
        {
            if(e.Item.Parent != null && e.Item.Parent.Selectable)
            {
                e.Item.Parent.Selected = true;
            }
        }

これを行うと、現在のメニュー項目に選択されたスタイルがないため、ポップアップサブメニューが混乱する可能性があります。

子ノードがまったく表示されていない場合は、MenuDataBoundで次のようなものをバインドしてみてください。

var myMenu = (Menu) sender;
var currentNode = SiteMap.Provider.FindSiteMapNode(HttpContext.Current);
if (currentNode != null)
{
    var parentMenuItem = myMenu.FindItem("Root/" + currentNode.ParentNode.Title);
    if (parentMenuItem != null && parentMenuItem.Selectable)
    {
        parentMenuItem.Selected = true;
    }
}

もう1つのオプションは、デフォルトのメニュースクリプトを破棄し、代わりにSuperfishのようなものを使用することです。

于 2010-10-25T19:03:39.243 に答える
0

これについては、codeproject ( http://www.codeproject.com/Articles/669717/How-to-correctly-use-sitemap-for-top-left-menus ) とここ ( http:// mangeshdevikar.enziq.com/how-to-correctly-use-sitemap-for-topleft-menus/ ) . それが役に立てば幸い。

于 2013-10-29T05:52:25.857 に答える