J'espère que vous pouvez m'aider. Tout d'abord, je voudrais vous dire que je suis un mec d'application de bureau, ce qui signifie que je développe principalement mes applications dans le bureau. Maintenant, j'essaye de construire une application web mais cela m'amène à ne pas être sûr de la confusion ou juste de le faire mal.asp.net construit runtime Menu avec lien hors site
J'ai un code ici que remplit un menu à l'exécution. Runtime, car les éléments de menu sont remplis au code et les éléments sont récupérés dans la base de données.
est ici le code derrière:
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);
}
}
}
et le code dans 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);
}
}
}
Alors Page.IsPostBack
est la chose de base que je devrais apprendre quand faire quelque chose dans une page. Mais le problème ici est, un de mon menu dans "footermenu" a un lien hors site, et il devrait rediriger la page dans mon blog .. mais ce qui se passe était, footermenu.SelectedValue
est vide une fois que j'ai cliqué sur le lien "Blog".
Que se passe-t-il?
MISE À JOUR
J'ai mis à jour le code toujours bloqué, le SelectedValue est encore vide
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); } }
Je l'ai eu en utilisant "Page_PreRender" – jaysonragasa