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
事件处理程序中完成。
上一篇: asp.net built runtime Menu with offsite link
下一篇: using the same cache for web site and web services over IIS