asp.net构建运行时的菜单与异地链接

我希望你能帮助我。 首先,我想告诉你我是一名桌面应用程序,这意味着我主要在桌面上开发我的应用程序。 现在我正在尝试构建一些Web应用程序,但这会导致我无法确定是否出现混淆或只是做错了。

我在这里有一个代码,它在运行时填充菜单 。 运行时间,因为它们的菜单项在代码后面填充,并且项目在数据库中提取。

这是后面的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        Menus menu = new Menus();
        imgMainLogo.ImageUrl = VARIABLES.MainLogoImage;
        menu.PopulateMenuControl(ref mainmenu, 2);
        menu.PopulateMenuControl(ref footermenu, 9);
    }
    else
    {
        System.Diagnostics.Debug.WriteLine("link: " + footermenu.SelectedValue);
        if (footermenu.SelectedValue != null)
        {
            Response.Redirect(footermenu.SelectedValue, true);
        }
    }
}

和PopulateMenuControl中的代码

public void PopulateMenuControl(ref Menu menucontrol, int menuparentid)
{
    //menucontrol.Items.Clear();

    foreach (MenuFields mf in GetMenusByParentID(menuparentid))
    {
        MenuItem menuitem = new MenuItem(mf.MenuName, ReplaceSystemNameLink(mf.Link));
        menucontrol.Items.Add(menuitem);

        foreach (MenuFields cmf in GetMenusByParentID(mf.MenuID))
        {
            MenuItem childmenuitem = new MenuItem(cmf.MenuName, ReplaceSystemNameLink(cmf.Link));
            menuitem.ChildItems.Add(childmenuitem);
        }
    }
}

所以Page.IsPostBack是我在页面中做一些事情时应该学习的最基本的东西。 但这里的问题是,我在“footermenu”中的一个菜单项有一个非现场链接,它应该将页面重定向到我的博客..但是发生的事情是, footermenu.SelectedValue是空的,一旦我点击“博客”链接。

这是怎么回事?


UPDATE

我更新了代码仍然卡住,SelectedValue仍然是空的

protected void Page_Load(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Page_Load IsPostBack: " + Page.IsPostBack.ToString());
    if (Page.IsPostBack)
    {
        if(footermenu.SelectedValue != null) 
        {
            System.Diagnostics.Debug.WriteLine("link: " + footermenu.SelectedValue);
        }
    }
}

protected void Page_Init(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Page_Init IsPostBack: " + Page.IsPostBack.ToString());
    if (!Page.IsPostBack)
    {
        Menus menu = new Menus();
        imgMainLogo.ImageUrl = VARIABLES.MainLogoImage;
        menu.PopulateMenuControl(ref mainmenu, 2);
        menu.PopulateMenuControl(ref footermenu, 9);
    }
}

您需要了解页面生命周期。

使用动态控件(在代码中创建和添加),您需要在每次加载页面时重新创建它们 - 这最好在init事件处理程序中完成。

链接地址: http://www.djcxy.com/p/74527.html

上一篇: asp.net built runtime Menu with offsite link

下一篇: using the same cache for web site and web services over IIS