2011-05-22 46 views
0

我希望你能帮助我。首先,我想告诉你我是一名桌面应用程序,这意味着我主要在桌面上开发我的应用程序。现在我正在尝试构建一些Web应用程序,但这会导致我无法确定是否出现混淆或只是做错了。asp.net内置运行时带有非现场链接的菜单

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

这里是后面的代码:在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); 
     } 
    } 
} 

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); 
     } 
    } 
} 

和代码,以便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); 
    } 
} 
+0

通过使用“Page_PreRender”得到它的工作 – jaysonragasa 2011-05-22 11:29:41

回答

1

你需要了解page lifecycle

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

+0

谢谢。将尽力回到这里 – jaysonragasa 2011-05-22 06:52:12

+0

Oded。我已经更新了这个问题。我的意思是在运行时填充菜单。 – jaysonragasa 2011-05-22 06:57:03

+0

@ Nullstr1ng - 这很好,我明白了。我的回答正好与您遇到的问题有关。 – Oded 2011-05-22 07:01:48

相关问题