我創建了一個應用程序,它具有一個菜單,其中的項目是動態創建的。該菜單充當語言菜單。ASP.NET頁面內容不會改變
<body runat="server">
<form id="Form1" runat="server">
<table class="TableLayout">
<tr>
<td class="TopNav" align="right">
<asp:Menu runat="server" ID="LanguageMenu" Orientation="Horizontal" OnMenuItemClick="LanguageMenu_MenuItemClick">
<LevelMenuItemStyles>
<asp:MenuItemStyle CssClass="TopNavItem" />
</LevelMenuItemStyles>
<StaticHoverStyle CssClass="TopNavItemHover" />
</asp:Menu>
</td>
</tr>
...
我使用會話變量來設置我當前的語言。
但是如果我點擊菜單更改會話變量:
public void LanguageMenu_MenuItemClick(Object sender, MenuEventArgs e)
{
Session["language"] = e.Item.Text;
}
頁面將重新加載與下面的代碼:
sportsPath = String.Format(@"{0}{1}\Sports\", xmlPath, Session["language"]);
//create LeftNavigation
string[] sports = Directory.GetFiles(sportsPath);
LeftNavigation.Items.Clear();
foreach (string sport in sports)
{
string text = sport.Replace(sportsPath, "").Replace(".xml", "");
MenuItem item = new MenuItem();
item.Text = text;
LeftNavigation.Items.Add(item);
}
的東西是內容沒有改變,只我點擊其他東西后。
如果我在點擊menuItem之後跳過我的代碼,我可以看到它傳遞了代碼,它應該改變,但是由於某種原因,頁面需要另外一個額外的觸發器來修改它的內容。
我也看到頁面重新加載,所以我不明白爲什麼它不立即改變。我想我還沒有理解asp.net邏輯。
我在做什麼錯?
我將我的代碼移動到了一個方法,我啓動了頁面加載,並且還點擊了我的menuitem。基本上,解決方案是一樣的,將它從page_load移出。 感謝您清理那個 – WtFudgE 2010-04-02 12:25:19