ASP.NET2.0的導航系統確實給web開發帶來方便,但是用過的用戶就會發現導航系統有一個很大的缺陷:他需要你手工編寫web.sitemap,web.sitemap的語法用語句流行話是“相當的簡單”,但是實際運用時,雖然簡單,但是稍微復雜的導航,你肯定出錯。為什麼?下面是一個簡單的sitemap,
<siteMap>
<siteMapNode title="Home" url="~/default.aspx" >
<siteMapNode title="Introduction to ASP.NET" url="~/introduction/default.aspx">
<siteMapNode title="What's New in Whidbey?" url="~/introduction/whatsnew.aspx"/>
<siteMapNode title="Sample Applications (Starter Kits)" url="~/introduction/starterkits.aspx"/>
<siteMapNode title="Introduction to Visual Web Developer" url="~/introduction/vwd.aspx"/>
</siteMapNode>
<siteMapNode title="Building A Web Application" url="~/development/default.aspx">
<siteMapNode title="Building a Simple Application" url="~/development/simple/default.aspx">
<siteMapNode title="Introduction to ASP.NET pages" url="~/development/simple/pages.aspx"/>
<siteMapNode title="Introduction to Server Controls" url="~/development/simple/servercontrols.aspx"/>
<siteMapNode title="Inline vs Code Behind Pages" url="~/development/simple/codeseparation.aspx"/>
<siteMapNode title="Sharing Code Between Pages" url="~/development/simple/codedirectory.aspx"/>
</siteMapNode>
</siteMap>
說白了,他只是一些siteMapNode 的嵌套,但是嵌套的開閉呼應對人而言,絕對是一個煩點,但是對計算機來說,就喜歡處理這些簡單的關系,所以我們可以編寫一個文件,讓系統自動檢索當前應用程序的頁面並自動生成導航。
miclae就寫了一篇文章,我已經將他用C#改寫並編譯為DLL文件,現在 你只要把該DLL文件拷貝到你項目的bin目錄下。並設置導航控件(menu,treeview)為引用該DLL,運行時,系統將自動根據你的目錄文件自動生成導航系統。
當然,該DLL文件的功能遠遠不只這些,他會自動去掉APP_*和bin目錄,如果你願意,你完全可以在web.config裡配制他,告訴dll 不要把某個目錄進行現實等。
現在你在添加/刪除文件時,再也不用修改web.sitemap