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