袁芳
摘要:網(wǎng)頁(yè)開發(fā)過程中存在大量重復(fù)性的設(shè)計(jì)和代碼編寫,這直接影響到網(wǎng)站的開發(fā)效率。本文基于.NET開發(fā)平臺(tái),主要論述了以熱點(diǎn)新聞排行為例,在ASP.NET中如何自定義用戶控件,并介紹了兩種制作熱點(diǎn)新聞排行的方法,從而提高開發(fā)新聞發(fā)布系統(tǒng)網(wǎng)站效率。
關(guān)鍵詞:熱點(diǎn)新聞;新聞排行;APS.NET
Abstract : The process of website development has a large number of repetive design and code writing,which directly affects the website's development efficiency. Based on.NET development platform, this paper mainly discusses the hot news ranking as an example,which introduce how to customize user controls in ASP.NET and two methods for making hot news, so as to improve the efficiency of the development of the news release system.
Key words: Hot News; News Ranking; APS.NET
0 引言
近十多年來,隨著計(jì)算機(jī)與網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展和風(fēng)行普及,互聯(lián)網(wǎng)已成為大眾獲取信息的重要來源,其中瀏覽新聞是重要內(nèi)容之一。很多新聞網(wǎng)站為了方便網(wǎng)民能快速便捷地了解國(guó)內(nèi)外最新最熱新聞,在網(wǎng)站中都提供了一個(gè)版塊,用于顯示熱點(diǎn)新聞,并且熱點(diǎn)新聞版塊大都會(huì)在多個(gè)頁(yè)面中出現(xiàn)。為了提高新聞發(fā)布系統(tǒng)網(wǎng)站的開發(fā)效率,重點(diǎn)推薦的一個(gè)比較科學(xué)的方法就是開發(fā)用戶自定義控件,用來顯示熱點(diǎn)新聞。本文即針對(duì)如何自定義用戶控件,探討論述在新聞發(fā)布系統(tǒng)中熱點(diǎn)新聞排行設(shè)計(jì)制作的方法。
1 用戶控件概述
在利用ASP.NET技術(shù)開發(fā)動(dòng)態(tài)網(wǎng)頁(yè)中,雖然ASP.NET提供的Web服務(wù)器控件具有十分強(qiáng)大的功能,但在實(shí)際開發(fā)應(yīng)用中,遇到的問題總是復(fù)雜多變的,為了滿足各式各樣的特殊功能需求,除了使用Web服務(wù)器控件外,還可以即如創(chuàng)建ASP.NET頁(yè)面一樣來創(chuàng)建可重復(fù)使用的自定義控件,這些控件則稱為用戶控件。
在一些典型情況下,常常需要?jiǎng)?chuàng)建自己定義的用戶控件,如有時(shí)需要實(shí)現(xiàn)完成Web服務(wù)器控件沒有提供的功能,有時(shí)可能需要提取多個(gè)網(wǎng)頁(yè)中相同的用戶界面來統(tǒng)一網(wǎng)頁(yè)的顯示風(fēng)格等。創(chuàng)建用戶控件的優(yōu)點(diǎn),一是可以在多個(gè)頁(yè)面中重復(fù)使用用戶控件,從而省去了許多重復(fù)性的工作,提高網(wǎng)頁(yè)開發(fā)效率,另一個(gè)就是網(wǎng)頁(yè)內(nèi)容需求發(fā)生改變時(shí),其對(duì)應(yīng)的要修改部分若是用戶控件的執(zhí)行代碼的話,只需修改用戶控件,其它添加、使用該用戶控件的網(wǎng)頁(yè)將會(huì)隨即發(fā)生一體聯(lián)動(dòng)修改,從而使得網(wǎng)頁(yè)的設(shè)計(jì)以及維護(hù)更趨簡(jiǎn)單易行[1]。
2 用戶控件的創(chuàng)建
用戶控件是一種復(fù)合控件,其文件與.aspx文件相似,具有用戶界面和代碼,同時(shí)還是以.ascx為擴(kuò)展名存儲(chǔ)的文本文件。創(chuàng)建用戶控件的方式有多種,對(duì)其重點(diǎn)表述如下
(1)一種是可以采用與創(chuàng)建ASP.NET網(wǎng)頁(yè)相似的方式而創(chuàng)建用戶控件,可以向用戶控件文件中添加所需Web服務(wù)器控件和標(biāo)記,并按需求定義分別添加Web服務(wù)器控件的屬性和方法,其后就可以將該用戶控件嵌入ASP.NET網(wǎng)頁(yè)中充當(dāng)一個(gè)單元模塊。
(2)第二種是將ASP.NET網(wǎng)頁(yè)更改為一個(gè)用戶控件。特別地,這種方法是針對(duì)于已經(jīng)開發(fā)好的ASP.NET網(wǎng)頁(yè)并需要在整個(gè)Web應(yīng)用程序中訪問其功能的情況下才會(huì)使用。
(3)第三種是自定義編寫一個(gè)類,該類從Control或WebControl派生[2]。需要注意的是,創(chuàng)建了用戶控件后,用戶控件文件并不能作為獨(dú)立文件來操作運(yùn)行,必須像處理Web服務(wù)器控件一樣,添加到其他ASP.NET頁(yè)中才能使用,因而也不能直接作為一個(gè)網(wǎng)頁(yè)來進(jìn)行整體顯示。
雖然創(chuàng)建用戶控件的方法已有多種,研究比較之后,論文選用了通過Visual Studio 2010 開發(fā)環(huán)境來創(chuàng)建用戶控件,這也是最常用的一種方法。具體實(shí)現(xiàn)過程為:首先要在新聞發(fā)布系統(tǒng)網(wǎng)站項(xiàng)目上創(chuàng)建用戶控件,為了便于網(wǎng)站資源的管理,一般把用戶控件文件和頁(yè)面文件分別放在不同的文件夾,從而實(shí)現(xiàn)良好有效的區(qū)分,在管理用戶控件文件夾上選中并單擊右鍵,在彈出的快捷菜單中選擇“添加新項(xiàng)”菜單命令,會(huì)彈出“添加新項(xiàng)”對(duì)話框,在其中擇取“Web用戶控件”選項(xiàng),并為其命名為HotspotNews.ascx。在此基礎(chǔ)上,單擊“添加”按鈕,即可將用戶控件添加到網(wǎng)站項(xiàng)目中。
3 新聞數(shù)據(jù)表設(shè)計(jì)
要實(shí)現(xiàn)對(duì)新聞發(fā)布系統(tǒng)的多項(xiàng)具體操作,其關(guān)鍵技術(shù)就是設(shè)計(jì)研發(fā)數(shù)據(jù)庫(kù)及合理確定訪問數(shù)據(jù)庫(kù)的技術(shù)方法。要制作熱點(diǎn)新聞排行榜,在數(shù)據(jù)庫(kù)新聞表中字段的設(shè)計(jì)將至關(guān)重要。本案例在設(shè)計(jì)新聞表中即用Clicks字段來記錄某條新聞的訪問次數(shù),新聞表的表結(jié)構(gòu)說明如表1所示。
4 設(shè)計(jì)熱點(diǎn)新聞排行的用戶控件
在網(wǎng)站項(xiàng)目的用戶自定義文件夾中雙擊HotspotNews.ascx用戶控件文件,插入一張兩行一列表來構(gòu)建整體布局:從工具箱中的數(shù)據(jù)欄,選中DataList控件將其拖到在第二行的單元格中。Datalist控件與GridView、DetailsView等數(shù)據(jù)綁定控件不同,允許自定義各種模板,而且僅能自動(dòng)生成ItemTemplate模板,更要自行編寫排序、分頁(yè)、編輯、刪除功能代碼。Datalist控件適合開發(fā)人員希望得到更多靈活性布局時(shí)使用,其最突出特點(diǎn)就是必須要通過模板來定義數(shù)據(jù)的顯示格式。本文案例使用Datalist控件,分別設(shè)置ItemTemplate項(xiàng)和AlternatingItemTem plate交替項(xiàng)目模板,在每個(gè)項(xiàng)中插入表格布局,拖放一HyperLink控件,設(shè)置其Text屬性值為“<%# Eval("Title") %>”,NavigateUrl屬性值為“<%# Eval("ID", "ShowNews.aspx?id={0}")%>”完成數(shù)據(jù)綁定表達(dá)式的編寫,在交替項(xiàng)AlternatingItemTemplate模板中設(shè)置表格背景色為某顏色值,使得新聞標(biāo)題列表可最終呈現(xiàn)交替顯示。
本文顯示熱點(diǎn)新聞排行列表方法是從新聞表NewsTable中獲取的點(diǎn)擊率最高的前6條最新的新聞?dòng)涗?。在HotspotNews.ascx.cs文件中,需要編寫訪問新聞表,抽取Clicks字段值最高的前6條記錄,并利用按新聞上傳日期字段降序排列的數(shù)據(jù)庫(kù)的操作方法,獲得降序排列效果,再將其并綁定到Datalist控件進(jìn)行完整顯示。具體實(shí)現(xiàn)代碼如下。
//通過Web.Config配置文件的ConnectionStrings節(jié)點(diǎn)中名稱為“Newsconn”中獲取數(shù)據(jù)連接語句,并創(chuàng)建數(shù)據(jù)庫(kù)連接對(duì)象
SqlConnection NewsConn=new SqlConnection(ConfigurationManager.ConnectionStrings["Newsconn"].ConnectionString());
//通過數(shù)據(jù)適配器對(duì)象sdaNews填充數(shù)據(jù)集對(duì)象dsNews
SqlDataAdapter sdaNews = new SqlDataAdapter("select top 6 * from NewsTable Order By Clicks,PubDate DESC", Newsconn);
DataSet dsNews = new DataSet();
sdaNews.Fill(dsNews);
//Datalist控件數(shù)據(jù)源設(shè)置以及綁定
DLNewsHotSpot.DataSource = dsNews.Table[0];
DLNewsHotSpot.DataBind();
當(dāng)用戶自定義控件研發(fā)完成后,就可以像ASP.NET工具箱里控件一樣把HotspotNews用戶控件拖到.aspx頁(yè)面中,并且可以重復(fù)使用,從而顯著提高編程效率,其運(yùn)行結(jié)果如圖1所示。
由圖1可見,其新聞排行顯示效果仍然未臻理想,比如當(dāng)新聞標(biāo)題文字過長(zhǎng),顯示新聞標(biāo)題有點(diǎn)亂,新聞標(biāo)題前沒有序數(shù)排列。下面用Literal控件顯示熱點(diǎn)新聞標(biāo)題,并對(duì)每條熱點(diǎn)新聞標(biāo)題前均加增了序號(hào),新聞標(biāo)題文字長(zhǎng)度控制在15字以下,編寫的代碼只需將前段代碼最后兩句改添為如下代碼即可,并設(shè)置超鏈接樣式,運(yùn)行效果如圖2所示,改進(jìn)后的效果方式將更加美觀。
//用for循環(huán)語句設(shè)置每條新聞標(biāo)題前序號(hào)的背景色,前4條的背景顏色不一樣,后面序號(hào)背景色是一樣
for (int i = 0; i < dsNews.Tables[0].Rows.Count; i++){
string bc = "";
switch (i){
case 0: bc = "#CC0000"; break;
case 1: bc = "#FF0000"; break;
case 2: bc = "#FF5353"; break;
case 3: bc = "#FFAC84"; break;
default: bc = "#FFCCCC"; break;
}
//當(dāng)新聞標(biāo)題的文字超過15個(gè)字符時(shí),用Substring方法截取前15個(gè)字符,后面連接“…”省略號(hào)
string Title = dsNews.Tables[0].Rows[i]["Title"].ToString();
if (Title.Length >= 15) {
Title = Title.Substring(0, 15) + "…";
}
//i對(duì)2求余數(shù),判斷奇偶行,新聞標(biāo)題顯示不同的背景色
if (i % 2 == 0){
// Literal控件與label控件相似,但Literal控件不允許對(duì)所顯示的文本應(yīng)用到樣式,可以通過設(shè)置其Text屬性,以編程方式來控制在該控件中顯示的文本
LiteralNews.Text += "
Else {
LiteralNews.Text += "
5 結(jié)束語
用戶控件是ASP.NET控件的擴(kuò)展,能夠把常用的界面和邏輯封裝為一個(gè)控件,這種技術(shù)可以讓程序員根據(jù)自己的需要開發(fā)出自定義的控件。在Web應(yīng)用開發(fā)中使用用戶控件,不僅可以提高代碼的重用性和開發(fā)效率,還可以讓使用用戶控件的網(wǎng)頁(yè)的顯示風(fēng)格保持一致[3]。本文結(jié)合用戶控件,介紹如何設(shè)計(jì)和制作熱點(diǎn)新聞排行的兩種方法,該模塊在新聞發(fā)布系統(tǒng)網(wǎng)站開發(fā)中,使用頻率比較高,從而減少重復(fù)代碼的編寫工作,以提高開發(fā)效率和系統(tǒng)的可維護(hù)性。
參考文獻(xiàn):
[1]明日科技.Asp.net從入門到精通[M].北京:清華大學(xué)出版社,2014.
[2]沈士根,汪承焱,許小東著. Web程序設(shè)計(jì):ASP.NET實(shí)用網(wǎng)站開發(fā)[M]. 北京:清華大學(xué)出版社,2009.
[3]王軍偉,李建民,林振榮. ASP.NET用戶控件技術(shù)在新聞列表頁(yè)面中的研究與應(yīng)用[J]. 計(jì)算機(jī)與現(xiàn)代化,2010(4):107-110.