熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET基於XML導航欄的制作

2013-11-13 09:52:21  來源: .NET編程 

  首先說明本文為照顧剛入門的新手有些地方可能會稍微說點基礎的東西高手可以直接忽略
   
    場景以前做網站的時候導航欄的鏈接都是寫死在頁面中的這樣不易與維護於是今天寫成了用XML配置的導航欄用到了LINQ to XML
   
    先介紹一下功能
   
    儲存導航欄信息的XML文件如下
   

  

    Title是顯示名稱Link是URLOrderId表示排序的序位Enabled為是否啟用這個菜單將最終被解析為一個ul列表
   

  

    然後我們來看看如何實現
   
    首先需要給菜單創建一個只包含屬性的模型類它的作用是成為對具體某一個菜單項的描述系統中傳遞的將是這樣一個模型
   

  

    接下來我們要寫一個從XML讀取所有菜單項並返回List<MenuItem>泛型集合的方法在這個例子裡List<MenuItem>裡放的是所有個MenuItem對象
   

  

    這個方法裡我用了LINQ to XML這是現在NET操作XML最方便的辦法但LINQ要求你的Framework版本至少是在這個方法中我們首先加載了 Menuxml文件然後查找所有MenuItem節點並把這些節點的屬性賦值給new出來的MenuItem對象創建MenuItem對象的時 候我使用的語法叫做對象初始化器在return語句中我寫了ToList()這樣可以確保返回值是List<MenuItem>類 型
   
    值得注意的是我並沒有把判斷Enabled和對OrderId排序的邏輯寫在這個方法中因為判斷是否啟用和排序這兩個操作屬於業務邏輯與數據 讀取無關所以我們分離了關注點GetList()是趨於穩定的方法任何業務需求的改變都不需要修改這個方法因為它的目的很簡單僅僅是讀取數 據一個方法只做一件事情這是一個原則
   
    接下來我們還需要寫一個業務方法從GetList()的菜單項中選擇所有Enabled的菜單並按OrderId升序排列
   

  

    為了偷懶我直接把查詢結果綁給了Repeater控件如果按照三層的思想我不可以把顯示這塊寫在這個業務方法裡本文不探討分層有興趣的朋友可以看看《ASPNET設計模式》這本書
   
    接下來我們只要在頁面上放一個Repeater控件並在Page_Load的時候調用FetchMenuData()就完成了
   

  

  

    有圖有真相

  


From:http://tw.wingwit.com/Article/program/net/201311/11811.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.