【问题标题】:Select a menu item from Master Page从母版页中选择一个菜单项
【发布时间】:2011-06-24 09:24:14
【问题描述】:

我目前有一个 asp 菜单控件,它在我的母版页中加载一个 SiteMapDataSource。站点地图节点之一是“工具”,它会打开一个通用的“Tools.aspx”内容页面。

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/Default.aspx" title="Home"  description="">
    <siteMapNode url="Tools.aspx" title="Tools"  description="" />
  </siteMapNode>
</siteMap>

“Tools.aspx”页面包含一个图像按钮,可将用户带到另一个内容页面“Translator.aspx”。导航到此页面时,不再选择“工具”菜单项。我的问题是,如何在“Translator.aspx”页面的母版页中选择“工具”菜单项?

我在“Translator.aspx”页面加载中尝试了以下方法:

protected void Page_Load(object sender, EventArgs e)
{
    //check if logged in
    if (!Page.IsPostBack)
    {
        Menu mp_Menu = (Menu)Page.Master.FindControl("mnuMaster");

        foreach (MenuItem mi in mp_Menu.Items)
        {
            if (mi.Text == "Tools")
            {
                mi.Selected = true;
            }
        }

    }
}

这不起作用,似乎返回了 0 个菜单项。

如果有人能对这个问题有所了解,我将不胜感激。谢谢。

【问题讨论】:

  • 我认为如果你的翻译器“是一个工具”,你可以把它放在工具节点中..
  • 我不希望“翻译”工具作为子菜单提供。我怎样才能做到这一点?谢谢。
  • 尝试在节点中添加隐藏(未测试)
  • 感谢您的帮助,但 visible="false" 也不起作用。也许我需要循环遍历子项?

标签: c# select menu sitemap master


【解决方案1】:

尝试将代码移动到 pre_render 或生命周期的后期,以确保加载后菜单不会被加载

【讨论】:

  • 我尝试将该方法放在 pre_render 中,因此现在菜单数据源加载在 pre_render 方法之前。然而,这仍然没有解决我的问题,仍然返回 0 个菜单项。
【解决方案2】:

我通过在母版页中输入以下代码解决了这个问题:

protected void mnuMaster_MenuItemDataBound(object sender, MenuEventArgs e)
    {
        if (Session["Translator"] != null)
        {
            if (mnuMaster.Items.Count > 0)
            {
                foreach (MenuItem mi in mnuMaster.Items)
                {
                    if (mi.Text == "Tools")
                    {
                        mi.Selected = true;
                        Session["Translator"] = null;
                    }
                }
            }
        }
    }

然后我将以下内容添加到“Translator.aspx”页面:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            Session["Translator"] = "true";
        }
    }

我认为这不是理想的解决方案,但它对我有用。

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2014-01-01
    • 2015-07-27
    • 2012-01-24
    • 1970-01-01
    相关资源
    最近更新 更多