首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 Menu 控制項新增 Target 屬性實現新視窗開啟導航

     編輯:關於ASP.NET

ASP.NET 2.0 內建的 Menu 控制項搭配 SiteMap 檔案,能輕鬆建立網站導航結構。但預設情況下,Menu 控制項無法控制連結的開啟方式(例如在新視窗或框架中開啟),這在實務開發中常造成困擾。其實只需透過 SiteMapNode 的自訂屬性與 MenuItemDataBound 事件,即可輕鬆實現目標視窗控制。

解決方案步驟

1. 在 Web.sitemap 中新增 target 自訂屬性

在站點地圖節點中加入 target 屬性,指定連結開啟目標(如 _blank、_self、_parent、_top 或自訂框架名稱)。

<siteMapNode title="首頁" description="" target="_blank" url="~/Default.aspx" />

2. 處理 Menu 控制項的 MenuItemDataBound 事件

在後置程式碼中撰寫事件處理邏輯,讀取 SiteMapNode 的 target 屬性並指派給 MenuItem 的 Target 屬性。

protected void MyMenu_MenuItemDataBound(object sender, MenuEventArgs e)
{
    string target = ((SiteMapNode)e.Item.DataItem)["target"];
    if (!string.IsNullOrEmpty(target))
    {
        e.Item.Target = target;
    }
}

運作原理

當 Menu 控制項繫結 SiteMap 資料來源時,每個選單項目都會觸發 MenuItemDataBound 事件。此時 e.Item.DataItem 即為對應的 SiteMapNode 物件,透過索引器存取自訂屬性 target,若存在且非空,便設定給 MenuItem.Target。瀏覽器渲染產生的錨點標籤將包含 target="_blank" 等屬性,從而實現新視窗開啟。

注意事項

  • SiteMapNode 的自訂屬性名稱區分大小寫,建議統一使用小寫 target。
  • 若需支援巢狀選單,此做法同樣適用於所有層級的節點。
  • 確保 Menu 控制項的 DataSourceID 指向正確的 SiteMapDataSource。

這項技巧不僅解決了新視窗開啟需求,也展示了 ASP.NET 2.0 導航架構的擴充彈性。開發者可依此模式擴充更多自訂屬性(如 CSS 樣式、圖示、權限角色等),豐富導航控制項的表現力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved