我正在使用母版頁和內容頁的項目。我的母版導航欄:從編程添加的主頁菜單項將值傳遞到內容頁面?
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/ProjectPage.aspx" Text="Home" />
<asp:MenuItem NavigateUrl="~/ProductBacklog.aspx" Text="Product Backlog"/>
<asp:MenuItem NavigateUrl="~/SprintBacklog.aspx" Text="Sprint Backlog" />
<asp:MenuItem NavigateUrl="~/MeetingPage.aspx" Text="Meetings" />
<asp:MenuItem NavigateUrl="~/Burndown.aspx" Text="Burndown"/>
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About Us"/>
</Items>
</asp:Menu>
在我的內容頁之一,我動態添加子菜單中的菜單項到我的「代辦衝刺」菜單項。有一個按鈕,每次用戶單擊該按鈕時,都會添加一個子菜單項,以便當用戶將鼠標懸停在導航菜單中的「Sprint Backlog」上時,子菜單就會出現。
protected void btSave_Click(object sender, EventArgs e)
{
menuItemList = (List<MenuItem>)Session["menuItemList"];
if (menuItemList == null)
{
menuItemList = new List<MenuItem>();
}
MenuItem menuItem = new MenuItem("Sprint " + sprintNumber, sprintNumber.ToString(), "SprintBacklog.aspx");
menuItemList.Add(menuItem);
Session["menuItemList"] = menuItemList;
}
在代碼:我創建的菜單項列表,創建具有(顯示文字,數值,navigationURL)的新菜單項,添加菜單項來的菜單項列表,然後將列表保存到會話做到這一點在我的母版頁的後面,我創建了一個菜單項列表,從Session中設置菜單項實例的值,並將子項目添加到適當索引處的導航菜單中。我要添加的兒童項目是菜單項列表中的菜單項。
List<MenuItem> menuItemList;
protected void Page_Load(object sender, EventArgs e)
{
menuItemList = (List<MenuItem>)Session["menuItemList"];
if (menuItemList != null)
{
foreach (MenuItem menuitem in menuItemList)
{
NavigationMenu.Items[2].ChildItems.Add(menuitem);
}
}
}
我知道是我給這些childitems的值,當我創造了他們,但我的問題是訪問這些值,當我加載SprintBacklog.aspx內容頁。每當用戶點擊其中一個子項時,它將始終導航到SprintBacklog.aspx,但該頁的內容應根據它們所點擊的子項而不同。我需要一種方法來知道他們點擊了哪個小孩,並訪問該值來填充我的內容頁面。
如果有人有更好的方式讓我把這件事情整理出來,我願意提出建議和改變。否則,如果我的設置可以工作,並且有一種方法可以提取被點擊的小孩的價值,我真的很想知道這一點。
我知道如果我在母版頁中對子項目進行硬編碼,我可以很容易地獲得該值,但是我的問題是我正在動態創建子菜單子項目,並且我不確定如何訪問它。
任何幫助將非常感謝!謝謝!
-Jose
有人有什麼想法嗎?我的一位朋友建議使用javascript,但如果可能的話,我想堅持使用純C#。 – Jupo
也許我會創建一個單獨的頁面來選擇衝刺 – Jupo