999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于.NET技術動態導航菜單的設計與實現

2015-04-29 00:44:03蘭萍
計算機時代 2015年2期

蘭萍

摘 要: 通過樹型菜單,用戶可以對資源的結構、類型有直觀的了解,但目前很多B/S系統的菜單還是通過代碼生成的。為此,基于.NET技術,通過開源項目PetaPoco實現代碼,設計并實現了動態導航菜單系統;介紹了數據庫設計、算法思想。該技術避免了靜態目錄樹下因數據源經常性改變而頻繁修改程序代碼的弊端,導航菜單通過數據庫進行控制,提高了系統的安全性,使管理變得更加靈活、高效。

關鍵詞: 動態導航菜單; PetaPoco; 數據庫設計; 算法

中圖分類號:TP301 文獻標志碼:A 文章編號:1006-8228(2015)02-42-03

Design and implementation of dynamic navigation menu based on .NET

Lan Ping

(Computer department, Shanghai information technology college, Shanghai 200331)

Abstract: Through the menu tree, the user can understand structure and types of the resources. Although many current B/S system menus are generated by code. A dynamic navigation menu based on ASP.NET is introduced. The code is mainly realized through the open source project PetaPoco. The database design and algorithm are introduced. The techniques have avoided the complex modification program code resulting from the change of data source under static catalog tree. The navigation menu is controlled by database which improves security and makes the management more flexible and efficient.

Key words: dynamic navigation menu; PetaPoco; database design; algorithm

0 引言

樹型菜單使用比較廣泛,比如我們熟悉的資源管理器就是典型的樹型菜單。它在頁面當中可以起到導航器的作用。通過樹型菜單,用戶可以對資源的結構、類型有一個直觀的了解[1]。網站的開發技術多種多樣的,比如ASP.NET、JSP、PHP等,但無論采用何種技術,一般而言導航菜單都是網頁中必不可少的一部分。導航菜單通常是將相應的代碼寫入頁面中的某一個區域中來實現,但是這樣的網站缺乏可維護性[2]。為了解決這個問題,本文介紹了基于ASP.NET技術的動態導航菜單的設計與實現方法。

1 通過Nuget添加petaPoco的引用

1.1 PetaPoco的介紹及添加

Nuget是一個.NET平臺下的開源的項目,它是Visual Studio的擴展。在使用Visual Studio開發基于.NET Framework的應用時,Nuget能把在項目中添加、移除和更新引用的工作變得更加快捷方便。Nuget是ASP.NET Gallery的一員。NuGet是免費、開源的包管理開發工具,專注于在.NET應用開發過程中,簡單地合并第三方的組件庫[3]。

PetaPoco是一款適用于.Net和Mono的微小、快速、單文件的微型對象關系映射器(ORM, Object Relational Mapper)。與那些功能完備的ORM(如NHibernate或Entity Framework)不同的是,PetaPoco更注重易用性和性能,而非豐富的功能。使用PetaPoco只需要引入一個C#文件,就可以使用強類型的 POCO(Plain Old CLR Object),并支持使用T4模板生成的類等等。

PetaPoco最讓人感興趣的功能包括:

⑴ 可與SQL Server、SQL Server CE、MySQL、PostgreSQL以及Oracle數據庫協同工作;

⑵ 包含針對Insert/Delete/Update/Save以及IsNew的多個輔助方法;

⑶ 支持簡單事務;

⑷ 對于翻頁請求會自動計算總記錄數,并獲取特定分頁;

⑸ 支持參數替換,能夠從對象屬性中抓取命名參數(named parameters);

⑹ 包括一個消耗資源很少的SQL Builder類;

⑺ 部分記錄更新;

⑻ 包括T4 Templates,可以用于基于數據庫結構生成POCO類。

由于PetaPoco是開源項目,因此添加條件來處理如空間數據等特定情況會很容易。

某項目采用微軟的Visual Studio 2012開發平臺,為上海一家園林公司開發,新建項目(不是新建網站)-->asp.net web窗體應用程序,自動添加很多包。

在項目名上單擊右鍵,在彈出式菜單中單擊“管理nuget程序包”,添加“petapoco-a tiny ormish thing for your pocos”包。

1.2 web.config的配置

在web.config文件中加入節點,并配置connectionString,providerName屬性。

"Data Source=lp\lplplp; User Id=sa; Password=lp15;

database=XingLu_IMS;"providerName="System.Data.SqlClient"/>

1.3 DataBase.tt的參數設置

打開DataBase.tt,修改ConnectionStringName,以及Namespace和RepoName。

ConnectionStringName="DefaultConnection";

Namespace="YC.PetaPoco";

RepoName="DBUtils";

保存之后VS會自動執行模板文件,并生成實體類文件: Database.cs。如果沒有生成成功,把VS關閉重新打開即可。

2 數據庫設計

DBMS采用微軟的SQL Server 2012,表名為Qs_Xl_modules,Qs_Xl_modules數據庫表的設計[4]如表1所示。

3 算法思想

⑴ 執行SQL查詢語句返回Parentid字段為0(為0表示菜單項是一級導航菜單)的數據集,并按Displayorder字段升序排列;

⑵ 利用for語句循環添加Parentid字段為0的菜單項,每一項為表格

的1行,同時獲取每項的Mid;

⑶ 獲取每1個Mid,執行SQL查詢語句返回Parentid字段為Mid(為二級導航菜單)的數據集,并按Displayorder字段升序排列;

⑷ 利用for語句循環添加Parentid字段為Mid的菜單項,每一項為表格

的1行。注意該for循環語句嵌套在⑵中for循環語句里面,形成for循環的嵌套。

4 部分核心代碼

部分靜態代碼[5]如下:

……

……

"img/caidan_2.jpg" id="menu" runat="server">

部分核心動態代碼[6]:

……

using YC.PetaPoco; //導入該命名空間

……

public void Show(string str)

{ List list=Qs_Xl_module.Fetch("select

* from Qs_Xl_modules where Parentid=0 and ShowState=1 and Class='"+ str+"' order by Displayorder");

string content="

border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";

content+="

"; //第一行(空行)

Qs_Xl_module module;

for (int i=0, count=list.Count; i

{ module=list[i];

if (module==null) continue;

content+="

";

List list1=Qs_Xl_module.Fetch("select

* from Qs_Xl_modules where Parentid="+module.Mid

.ToString()+" and ShowState=1 and Class='"+str+"'

order by Displayorder");

for (int j=0, len=list1.Count; j

{ if (list1[j]==null) continue;

content+="

?;?;

?;

"+module.Modulename+"

+(i==0 ? "":" style=\"display:none;\"")+">?;

href=\""+list1[j].Linkurl+"\" class=\"menu-two2\">

?;?;

16\" height=\"15\" />"+list1[j].Modulename+"

主站蜘蛛池模板: 成人福利在线观看| 国产青榴视频在线观看网站| 少妇极品熟妇人妻专区视频| 99视频精品在线观看| 人妻丰满熟妇αv无码| 伊人久久大香线蕉影院| 欧美日韩在线国产| 人妻91无码色偷偷色噜噜噜| 最新日韩AV网址在线观看| 青青草国产精品久久久久| 色天天综合久久久久综合片| 综合成人国产| 亚洲二区视频| 亚洲一区二区视频在线观看| 91青青视频| 国产一国产一有一级毛片视频| 国产在线八区| 精品无码一区二区在线观看| 免费无码AV片在线观看中文| 伊人婷婷色香五月综合缴缴情| 18黑白丝水手服自慰喷水网站| 国产精品午夜福利麻豆| 成年人视频一区二区| 免费视频在线2021入口| 国产欧美日本在线观看| 欧美一道本| 一区二区无码在线视频| 亚洲熟女中文字幕男人总站| 福利在线不卡| 国产黑丝一区| 91美女视频在线观看| 日韩免费毛片视频| 国产精品福利在线观看无码卡| 国产精品免费入口视频| 国产免费a级片| 成人福利在线免费观看| 全免费a级毛片免费看不卡| 亚洲大学生视频在线播放| 国产欧美日韩一区二区视频在线| 新SSS无码手机在线观看| 亚洲日韩精品无码专区97| 99这里精品| 日韩天堂视频| 免费可以看的无遮挡av无码| 久久国产高清视频| 午夜爽爽视频| 日本欧美视频在线观看| 亚洲欧美日韩色图| 色婷婷成人网| 国产精品七七在线播放| 91免费观看视频| 国产成人三级| 亚洲中文字幕97久久精品少妇| 亚洲综合色区在线播放2019| 国产精品美乳| 国产网友愉拍精品| 欧洲成人在线观看| 另类重口100页在线播放| 亚洲色图欧美激情| 欧洲亚洲一区| 久久视精品| 大香网伊人久久综合网2020| 性喷潮久久久久久久久| 亚洲第一区在线| 日韩精品亚洲精品第一页| 久久久久国产精品嫩草影院| 欧美精品aⅴ在线视频| 99福利视频导航| 日本不卡视频在线| 亚洲男人的天堂久久香蕉网| 黄色国产在线| 美女一区二区在线观看| 真实国产乱子伦视频| 2024av在线无码中文最新| 五月天丁香婷婷综合久久| 亚洲美女一区| 国产区网址| 国产哺乳奶水91在线播放| 亚洲精品视频在线观看视频| 亚洲中文字幕无码爆乳| 国内精品九九久久久精品| 福利视频一区|