2011-05-22 48 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

相關問題