網(wǎng)絡(luò)新聞發(fā)布系統(tǒng)_第1頁
網(wǎng)絡(luò)新聞發(fā)布系統(tǒng)_第2頁
網(wǎng)絡(luò)新聞發(fā)布系統(tǒng)_第3頁
網(wǎng)絡(luò)新聞發(fā)布系統(tǒng)_第4頁
網(wǎng)絡(luò)新聞發(fā)布系統(tǒng)_第5頁
已閱讀5頁,還剩94頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

編號:時間:2021年x月x日書山有路勤為徑,學(xué)海無涯苦作舟頁碼:第頁TOC\o"1-5"\h\z\u項目5建立網(wǎng)站新聞發(fā)布系統(tǒng) 5目標(biāo): 5任務(wù)1發(fā)布新聞 55.1.1任務(wù)描述 55.1.2任務(wù)分析 65.1.3相關(guān)知識 61、建立靜態(tài)類 6(1)對象分析 6(2)屬性分析 6(3)定義新聞類 7(4)建立新聞類 72、建立新聞數(shù)據(jù)表 83、建立添加新聞的存儲過程 94、建立添加新聞的數(shù)據(jù)訪問層 105、建立添加新聞操作的業(yè)務(wù)邏輯層 116、建立新聞分類的數(shù)據(jù)訪問層 117、建立新聞分類的業(yè)務(wù)邏輯層 138、發(fā)布新聞操作的界面 13(1)發(fā)布新聞的界面設(shè)計 13(2)發(fā)布新聞的后臺代碼 165-1-4任務(wù)實施 195-1-5任務(wù)拓展 20任務(wù)2配置和應(yīng)用FCKEditor編輯器 205.2.1任務(wù)描述 205.2.2任務(wù)分析 205.2.3相關(guān)知識 201、配置FCKEditor編輯器 20(1)FCKEditor簡介 20(2)下載FCKeditor 21(3)引用FredCK.FCKeditorV2.dll文件 21(4)把FCKeditor控件添加到VisualStudio2008的工具箱中 21(5)在WebConfig配置FCKeditor所需的參數(shù) 22(6)FCKeditor詳細(xì)的設(shè)置 22(7)FCKeditor的精簡 232、應(yīng)用FCKEditor編輯器 24(1)把FCKEditor編輯器控件添加到網(wǎng)頁中 24(2)讀取FCKeditor編輯器中的內(nèi)容 255.2.4任務(wù)實施 255.2.5任務(wù)拓展 26任務(wù)3顯示新聞內(nèi)容 265.3.1任務(wù)描述 265.3.2任務(wù)分析 265.3.3相關(guān)知識 261、新建讀取新聞的存儲過程 262、在數(shù)據(jù)訪問層添加讀取新聞的方法 273、在業(yè)務(wù)邏輯層添加讀取新聞的方法 294、新建顯示新聞列表的網(wǎng)頁 29(1)建立新聞列表頁 29(2)新聞列表頁面規(guī)劃 29(3)新聞列表頁面代碼 31(4)新聞列表的后臺代碼 34(5)測試新聞列表頁的瀏覽效果 345、新建顯示新聞內(nèi)容的網(wǎng)頁 35(1)新建顯示新聞內(nèi)容的網(wǎng)頁,并設(shè)計該頁的布局 35(2)設(shè)計顯示新聞的樣式 35(3)設(shè)計最清晰的動態(tài)樣式 36(4)顯示新聞網(wǎng)頁的具體代碼 36(5)顯示新聞內(nèi)容的后臺代碼 37(6)顯示結(jié)果 386、分頁顯示新聞內(nèi)容 39(1)分頁新聞顯示的必要性 39(2)修改FCKeditor的分頁功能 39(3)新建按設(shè)定字符串分頁的函數(shù) 40(4)修改顯示新聞的后臺代碼 41(5)最終顯示的分頁效果 417、應(yīng)用搜索引擎的排名規(guī)則 41(1)編寫搜索引擎最關(guān)注的內(nèi)容 41(2)新建一個網(wǎng)站配置的簡單對象 41(3)新建網(wǎng)站配置數(shù)據(jù)表 42(4)新建讀取網(wǎng)站配置的存儲過程 42(5)新建讀取網(wǎng)站配置的數(shù)據(jù)訪問層對象 42(5)新建讀取網(wǎng)站配置的業(yè)務(wù)邏輯層對象 43(6)去HTML標(biāo)記函數(shù) 44(7)截取固定長度的字符串函數(shù) 45(8)網(wǎng)頁標(biāo)題、關(guān)鍵字和描述的構(gòu)成 45(9)提示搜索引擎搜索該頁 455.3.4任務(wù)實施 465.3.5任務(wù)拓展 47任務(wù)4修改和刪除新聞 475.4.1任務(wù)描述 475.4.2任務(wù)分析 475.4.3相關(guān)知識 475.4.4任務(wù)實施 475.4.5任務(wù)拓展 47任務(wù)5靜態(tài)顯示新聞 475.5.1任務(wù)描述 485.5.2任務(wù)分析 485.5.3相關(guān)知識 481、把指定動態(tài)網(wǎng)頁的內(nèi)容全部讀取到內(nèi)存 48(1)取得動態(tài)網(wǎng)頁的絕對網(wǎng)址 48(2)下載指定動態(tài)網(wǎng)頁的內(nèi)容 482、打開一個文本文件 493、把內(nèi)存中的數(shù)據(jù)寫入到打開的文件 494、什么時候把動態(tài)發(fā)布的新聞靜態(tài)化 505、修改添加新聞的網(wǎng)頁,在添加新聞時生成靜態(tài)網(wǎng)頁 505.5.4任務(wù)實施 515.5.5任務(wù)拓展 51任務(wù)6應(yīng)用jQuery添加動態(tài)樣式 515.6.1任務(wù)描述 515.6.2任務(wù)分析 515.6.3相關(guān)知識 511、jQuery簡介、下載與引用 512、jQuery選擇器 52(1)最簡單的jQuery應(yīng)用 52(2)定義選中新聞內(nèi)容的jQuery選擇器 53(3)設(shè)計選定對象應(yīng)用的樣式 533、jQuery的事件處理 53(1)為特定元素應(yīng)用事件 53(2)jQuery中的ready事件 54(3)鼠標(biāo)懸停事件 544、jQuery的事件處理添加到哪里最合適 545、應(yīng)用jQuery后的效果 555.6.4任務(wù)實施 555.6.5任務(wù)拓展 56任務(wù)7利用Ajax更新靜態(tài)網(wǎng)頁的點擊次數(shù)身 565.7.1任務(wù)描述 565.7.2任務(wù)分析 565.7.3相關(guān)知識 561、Ajax簡介 562、新建更新瀏覽次數(shù)的動態(tài)網(wǎng)頁 573、XMLHttpRequest對象 57(1)XMLHttpRequest對象簡介 57(2)創(chuàng)建XMLHttpRequest對象 584、建立要連接的URL 585、打開到服務(wù)器的連接 596、定義回調(diào)函數(shù) 597、發(fā)出請求 618、測試運行效果 615.7.4任務(wù)實施 625.7.5任務(wù)拓展 62任務(wù)8在新聞頁插入廣告 625.8.1任務(wù)描述 625.8.2任務(wù)分析 625.8.3相關(guān)知識 621、建立隨機讀取一個產(chǎn)品的存儲過程 622、建立讀取隨機產(chǎn)品信息的數(shù)據(jù)訪問層 633、建立讀取隨機產(chǎn)品信息的業(yè)務(wù)邏輯層 634、新建一個生成產(chǎn)品廣告的方法 645、修改顯示新聞的后臺代碼 646、測試廣告效果 645.8.4任務(wù)實施 655.8.5任務(wù)拓展 65任務(wù)9給新聞頁添加熱點聚焦 655.9.1任務(wù)描述 655.9.2任務(wù)分析 655.9.3相關(guān)知識 661、編寫自定義控件 662、動態(tài)更新熱點聚焦數(shù)據(jù) 72(1)定義熱點聚焦的XML數(shù)據(jù)源文件 72(2)新建管理熱點聚焦數(shù)據(jù)源的網(wǎng)頁 733、把熱點聚焦控件添加到顯示新聞的網(wǎng)頁 774、建立用戶控件 775、將熱點聚焦用戶控件添加到顯示新聞的網(wǎng)頁中 786、熱點聚焦控件的顯示效果 795.9.4任務(wù)實施 795.9.5任務(wù)拓展 79小結(jié) 79

項目5建立網(wǎng)站新聞發(fā)布系統(tǒng)信息發(fā)布是網(wǎng)絡(luò)營銷的發(fā)動機?!蹲髠鳌は骞迥辍贰爸倌嵩唬骸砸宰阒?,文以足言。不言,誰知其志?言之無文,行而不遠(yuǎn)。’”既強調(diào)了宣傳的重要也強調(diào)了內(nèi)容的重要。在“酒香也怕巷子深”的時代,不言,誰知你是誰?不言,誰知你有什么產(chǎn)品?必須宣傳企業(yè)、產(chǎn)品與服務(wù),宣傳才能提高暴光率,宣傳才能保持你與顧客的接觸率。買東西,有人只買貴的,不買對的;有人只買對的,不買貴的;其實都只能買他知道的產(chǎn)品,根本不可能買不知道的產(chǎn)品。目前,在產(chǎn)能過盛,同質(zhì)化嚴(yán)重的市場上,不論你的產(chǎn)品力多強,你不去宣傳,都沒戲。只有想辦法把產(chǎn)品的利益?zhèn)鞑サ筋櫩偷男睦?,讓利益占領(lǐng)顧客的心智,營銷才能成功。怎么才能讓利益占領(lǐng)顧客的心智呢?就是信息發(fā)布。因此,信息發(fā)布是網(wǎng)絡(luò)營銷的發(fā)動機。發(fā)布獨特信息才能有好的搜索引擎排名。有網(wǎng)站而沒有好的搜索引擎排名,就不能有效開展電子商務(wù)。甚至可以說沒有好的排名就無商可務(wù)。現(xiàn)在的網(wǎng)站多如牛毛,對于非知名網(wǎng)站,用戶主要依靠搜索引擎和其他網(wǎng)站上的鏈接來訪問你的網(wǎng)站,而非依靠域名。不發(fā)布獨特信息,就不會有好的搜索引擎排名,沒有好的搜索引擎排名你的網(wǎng)站做得再華麗,也不會有人找到,用戶找不到你的網(wǎng)站就不可能形成銷售。很多網(wǎng)站已經(jīng)意識到這一點了,發(fā)布了大量的信息,但信息不是自己寫的,基本全是轉(zhuǎn)發(fā)的,沒有自己的特點,沒有獨特性。目前的搜索引擎都有一定的智能,能夠區(qū)分信息是不是轉(zhuǎn)發(fā)的,轉(zhuǎn)發(fā)的信息,對于搜索引擎排名有一定的幫助,但幫助不大。因此,發(fā)布獨特的信息很重要。豐富的信息能帶來不同類型的客戶。發(fā)布信息不僅要發(fā)布與企業(yè)有關(guān)的信息、與產(chǎn)品有關(guān)的信息、與銷售有關(guān)的信息,更重要的是要發(fā)布與用戶有關(guān)的信息,用戶搜索他感興趣的信息時,搜索到你的網(wǎng)站/網(wǎng)頁,他看自己感興趣的信息時,同時也看到了你的網(wǎng)站與商品,如果他感覺你的網(wǎng)站不錯,產(chǎn)品也好,當(dāng)然就會購買。因此,不僅發(fā)布信息很重要,而且不能把網(wǎng)站的信息發(fā)布限定的范圍太窄,你的客戶感興趣的信息都可以大量發(fā)布。要大量發(fā)布信息,沒有一個好的信息發(fā)布系統(tǒng),一是費時費力,二是各個網(wǎng)頁風(fēng)格迥異,帶給用戶的感受很不好,他就會產(chǎn)生這樣的感覺,你們網(wǎng)頁就是這種水平,你們的產(chǎn)品也好不到哪去,用戶看到你的產(chǎn)品他也不會購買你的產(chǎn)品。這也是造成那些相信只要有錢做廣告就能做好營銷的企業(yè),經(jīng)常出現(xiàn)廣告點擊量高而銷售額低的尷尬現(xiàn)象的重要原因。古語講:“行之善者,在所能為?!苯⒕W(wǎng)站新聞發(fā)布系統(tǒng)有著重要意義,在本項目中研究如何才能做好信息發(fā)布系統(tǒng)。目標(biāo):(1)建立一個讓用戶可以方便地發(fā)布新聞的系統(tǒng)(包括發(fā)布/修改/刪除);(2)建立可以讓瀏覽者可以愉快閱讀的新聞顯示頁面;(3)通過前兩項內(nèi)容學(xué)習(xí)、實踐,讓讀者掌握相關(guān)ASP.NET知識,學(xué)會基于三層架構(gòu)ASP.NET網(wǎng)站開發(fā);任務(wù)1發(fā)布新聞5.1.1任務(wù)描述新聞發(fā)布系統(tǒng)是企業(yè)營銷網(wǎng)站的一個重要子系統(tǒng),新聞發(fā)布是一個網(wǎng)站最基本、也是最重要的工作。在這一任務(wù)中實現(xiàn)新聞發(fā)布系統(tǒng)中的新聞發(fā)布功能。5.1.2任務(wù)分析如項目2中圖XXX所示,新聞發(fā)布系統(tǒng)是基于三層架構(gòu)進(jìn)行開發(fā)的,基于三層架構(gòu)建立進(jìn)行項目開發(fā)的基本過程如下:確定對象建立實體類建立數(shù)據(jù)表建立數(shù)據(jù)訪問類建立業(yè)務(wù)邏輯類建立用戶界面建立后臺代碼最后測試運行效果。在這一任務(wù)中,按基于三層架構(gòu)進(jìn)行項目開發(fā)的基本過程,逐一完成新聞發(fā)布系統(tǒng)各個模塊的開發(fā),最終實現(xiàn)寫成新聞發(fā)布功能。5.1.3相關(guān)知識一個系統(tǒng)在編碼前,都要經(jīng)過分析與設(shè)計兩個步驟。在分析階段,一般拋開具體技術(shù),首先抽象出類及其屬性。1、建立靜態(tài)類(1)對象分析在企業(yè)營銷網(wǎng)站項目中新聞發(fā)布是一個很簡單的用例,從新聞發(fā)布用例中首先識別對象,然后提取出類。新聞發(fā)布的實體類是新聞類,因為新聞很多,進(jìn)行分類管理會更加方便,如把新聞分為企業(yè)新聞、服務(wù)條款、專業(yè)知識、常見問題等,所以還需要一個新聞分類對象。(2)屬性分析屬性是用來描述類和對象的特性的。一個屬性是一個數(shù)據(jù)項(狀態(tài)信息),類中對象都有相應(yīng)的值(狀態(tài))。在面向?qū)ο蠓治鲋?,“屬性”用來反映問題域和系統(tǒng)的任務(wù);屬性能幫助我們更深入、更具體的認(rèn)識類和對象和結(jié)構(gòu),換句話說,屬性能為“類和對象”以及“結(jié)構(gòu)”提供更多的細(xì)節(jié)。選擇屬性的過程包括分析和選擇兩步。一般步驟是:首先,在需求陳述中找出屬性或通過分析找出屬性。這些屬性必須是問題域中對象的基本性質(zhì),而且在目標(biāo)系統(tǒng)中是必要的。也就是說,只考慮與目標(biāo)系統(tǒng)相關(guān)的屬性,不考慮超出目標(biāo)系統(tǒng)范圍的屬性。最后,恰當(dāng)?shù)慕o屬性命名。按照如上原則,企業(yè)營銷網(wǎng)站系統(tǒng)中新聞分類的屬性有編號、分類名稱。新聞類的屬性有編號、新聞分類、標(biāo)題、來源、作者、發(fā)布時間、內(nèi)容、瀏覽次數(shù)等。描述屬性的語法格式為:可見性屬性名類型名=初值{性質(zhì)串}在類圖中公有類型用“+”表示,私有類型用“?”表示,把它們標(biāo)識在屬性名稱的左側(cè)。在分析階段,不需要按照某種編程語言設(shè)計,也不需要設(shè)計具體細(xì)節(jié)。繪制分析階段的實體對象圖主要是用來與客戶交流的,并為下一步的設(shè)計打下基礎(chǔ)。新聞分類實體對象與新聞實體對象如圖5-1-1所示。圖5-1-1新聞分類與新聞的類圖(3)定義新聞類根據(jù)分析材料與技術(shù)平臺,把自定義的實體類轉(zhuǎn)化成系統(tǒng)類。本實例網(wǎng)站是基于C#的ASP.NET網(wǎng)站,如圖5-1-2所示,因為C#是一種很新的語言,一些UML分析工具中可能沒有C#的數(shù)據(jù)類型,在實際設(shè)計時有一定的不便。圖5-1-2新聞分類與新聞的類圖(4)建立新聞類根據(jù)系統(tǒng)類建立一個真實的類。右鍵單擊Model項目類庫,選擇“新建項”,如圖5-1-3所示,選擇類模板,輸入文件名NewsClass.cs,如圖5-1-4所示。圖5-1-3添加新項圖5-1-4新建NewsClass.cs類文件在新建的NewsClass.cs文件中,輸入NewsClass類代碼。Model項目類庫中的類是實體類,只有字段與屬性,沒有方法。因此,只需要為NewsClass類定義字段和屬性。在.NETFramework3.5中新增了自動屬性,不需要定義字段變量,只需要簡單地定義屬性。NewsClass類的定義代碼如下:namespaceModel{publicclassNewsClass{publicintClassID{get;set;}publicstringClassName{get;set;}}}按照同樣的方法,在Model項目類庫中建立News.cs類文件,在新建的News.cs類文件中,輸入News類代碼,News類定義代碼如下。usingSystem;namespaceModel{publicclassNews{publicintID{get;set;}publicNewsClassNewsClass{get;set;}publicstringTitle{get;set;}publicstringSource{get;set;}publicstringAuthor{get;set;}publicstringContent{get;set;}publicDateTimeUpdatatime{get;set;}publicintClick{get;set;}}}2、建立新聞數(shù)據(jù)表靜態(tài)模型中的數(shù)據(jù)的形態(tài),是一種“瞬時”的數(shù)據(jù),即在程序運行的時候存在于內(nèi)存中,一旦程序結(jié)束,或者數(shù)據(jù)處理結(jié)束,數(shù)據(jù)就從內(nèi)存中被清除。數(shù)據(jù)的另外一種表現(xiàn)形態(tài),就是永久化保存的形態(tài)。在很多情況下,需要把處理的數(shù)據(jù)保存到磁盤上,使數(shù)據(jù)成為永久化保存數(shù)據(jù)。新聞類也是一樣的,需要將新聞信息的數(shù)據(jù)保存起來才能在今后瀏覽。數(shù)據(jù)庫是最常用,也是最有效的數(shù)據(jù)存儲方法。在一般的項目中都采用數(shù)據(jù)庫來保存數(shù)據(jù),我們這個實例項目采用SQLServer來保存數(shù)據(jù)。使用面向?qū)ο蠹夹g(shù)把數(shù)據(jù)保存在對象中,SQLServer是關(guān)系型數(shù)據(jù)庫,怎么把保存在對象中的數(shù)據(jù)保存到關(guān)系型數(shù)據(jù)庫,使“瞬時”數(shù)據(jù)變成永久數(shù)據(jù)呢?采用面向?qū)ο蠼<夹g(shù)建立了對象模型后,可以把靜態(tài)對象映射到數(shù)據(jù)庫,映射方法是把靜態(tài)模型中的類和關(guān)系數(shù)據(jù)庫中的表相對應(yīng),數(shù)據(jù)表的名稱對應(yīng)類的名稱,類數(shù)據(jù)表的列分別對應(yīng)類屬性。靜態(tài)模型中類的一個實例(對象)和數(shù)據(jù)模型中表的一條紀(jì)錄(行)相對應(yīng)。但需要注意:從靜態(tài)類到表的映射不全是一一對應(yīng)的,對于簡單的應(yīng)用,大多數(shù)靜態(tài)模型中的類與數(shù)據(jù)庫中的表是一一對應(yīng)的。按項目3中講述的方法,打開網(wǎng)站的數(shù)據(jù)庫,在這個數(shù)據(jù)庫中再添加NewsClass表,根據(jù)NewsClass類在SQLServer建立的NewsClass表,NewsClass表定義如圖5-1-5所示。在這個數(shù)據(jù)庫中再添加News表,根據(jù)News類在SQLServer建立的News表,News表結(jié)構(gòu)如圖5-1-6所示。注意:要把新建的NewsClass表的ClassID字段定義為關(guān)鍵字段,并把該字段是否是標(biāo)識規(guī)范設(shè)為“是”,參見圖5-1-5。同理,要把新建的News表中的ID字段定義為關(guān)鍵字段,并把該字段是否是標(biāo)識規(guī)范設(shè)為“是”。圖5-1-5NewsClass表結(jié)構(gòu)圖5-1-6News表結(jié)構(gòu)把靜態(tài)對象映射到數(shù)據(jù)庫后,就可以利用ADO.NET技術(shù),把靜態(tài)對象中的數(shù)據(jù)保存到數(shù)據(jù)庫中了。3、建立添加新聞的存儲過程打開本實例網(wǎng)站的數(shù)據(jù)庫(EMData.MDF),按項目3中所述的添加存儲過程的方法,建立添加新聞的存儲過程(Add_News)。代碼如下:ALTERPROCEDURE[dbo].[Add_News](@ClassIDint,@Titlenvarchar(50),@Sourcenvarchar(50),@Authornvarchar(50),@Contentntext,@UpdatatimeDatetime,@Clickint)ASINSERTINTONews(ClassID,Title,Source,Author,Content,Updatatime,Click)Values(@ClassID,@Title,@Source,@Author,@Content,@Updatatime,@Click)RETURN@@Identity在此存儲過程中的最后一句是RETURN@@Identity,這一句很重要,對于添加記錄的存儲過程,如果數(shù)據(jù)表中的關(guān)鍵字段是標(biāo)識字段,它就返回了新添加的一條新聞的自動編號。通過程序可以訪問。獲得該返回值的方法是:首先,定義命令對象獲取默認(rèn)返回值的參數(shù),默認(rèn)返回參數(shù)的參數(shù)名稱是ReturnValue,參數(shù)的類型是SqlDbType.Int、參數(shù)的寬度為4、參數(shù)的方向是返回值ReturnValue、參數(shù)的精度、參數(shù)的小數(shù)位數(shù)、源列、要使用的DataRowVersion和參數(shù)的值初始化SqlParameter類的新實例。這個參數(shù)的屬性很多,方法代碼有些復(fù)雜,但很實用。示例代碼如下:cmd.Parameters.Add(newSqlParameter("RETURNVALUE",SqlDbType.Int,4,ParameterDirection.ReturnValue,false,0,0,string.Empty,DataRowVersion.Default,null));然后,在執(zhí)行存儲過程之后,用如下的方法獲取返回值:intID=(int)cmd.Parameters["RETURNVALUE"].Value;4、建立添加新聞的數(shù)據(jù)訪問層打開DAL項目類庫,在其中新建一個NewsDAL.cs類文件(參見圖5-1-3),這是添加新聞的數(shù)據(jù)訪問層,用該類直接操作數(shù)據(jù)庫中的News表,在其中新建Add_News()方法,用該方法向News表添加新聞。代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Data.SqlClient;usingModel;usingSQLHelper;namespaceDAL{publicclassNewsDAL{publicintAdd_News(Newsnews){SQLHelper.SQLHelpersqlHelper=newSQLHelper.SQLHelper();SqlParameter[]ParamList={sqlHelper.CreateInParam("@ClassID",SqlDbType.Int,4,news.NewsClass.ClassID),sqlHelper.CreateInParam("@Title",SqlDbType.NVarChar,50,news.Title),sqlHelper.CreateInParam("@Source",SqlDbType.NVarChar,50,news.Source),sqlHelper.CreateInParam("@Author",SqlDbType.NVarChar,50,news.Author),sqlHelper.CreateInParam("@Content",SqlDbType.NText,0,news.Content),sqlHelper.CreateInParam("@Updatatime",SqlDbType.DateTime,8,news.Updatatime),sqlHelper.CreateInParam("@Click",SqlDbType.Int,4,news.Click)};try{return(sqlHelper.RunProc("Add_News",ParamList));}catch(Exceptionex){SystemError.CreateErrorLog(ex.Message);thrownewException(ex.Message,ex);}finally{sqlHelper.Close();}}}5、建立添加新聞操作的業(yè)務(wù)邏輯層打開BLL項目類庫,在其中新建一個NewsService.cs類文件,并在該文件中添加一個Add_News()方法,用它把從網(wǎng)頁中接收到的數(shù)據(jù)傳遞給NewsDAL對象的Add_News()方法,實現(xiàn)添加新聞。代碼如下:usingSystem.Collections.Generic;usingDAL;usingModel;namespaceBLL{publicclassNewsService{publicintAdd_News(Newsnews){NewsDALnewsDAL=newNewsDAL();return(newsDAL.Add_News(news));}}}6、建立新聞分類的數(shù)據(jù)訪問層打開DAL項目類庫,在其中新建一個NewsClassDAL.cs類文件,用該類直接操作數(shù)據(jù)庫中的NewsClass表,在NewsClassDAL.cs類文件新建Get_NewsClass()方法,讀取所有新聞分類,再建立一個Get_SingNewsClass()方法,按ID讀取指定的新聞分類。代碼如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Data.SqlClient;usingModel;usingSQLHelper;namespaceDAL{publicclassNewsClassDAL{publicList<NewsClass>Get_NewsClass(){SQLHelper.SQLHelpersqlHelper=newSQLHelper.SQLHelper();SqlParameter[]ParamList={sqlHelper.CreateInParam("@ParentID",SqlDbType.Int,4,nParentID)};SqlDataReaderrec=null;try{sqlHelper.RunProc("Get_NewsClass",ParamList,outrec);}catch(Exceptionex){SystemError.CreateErrorLog(ex.Message);thrownewException(ex.Message,ex);}List<NewsClass>List_NewsClass=newList<NewsClass>();while(rec.Read()){NewsClassnewsClass=newNewsClass();newsClass.ClassID=Int32.Parse(rec["ClassID"].ToString());newsClass.ClassName=rec["ClassName"].ToString();List_NewsClass.Add(newsClass);newsClass=null;}sqlHelper.Close();returnList_NewsClass;}publicNewsClassGet_SingNewsClass(intnClassid){SQLHelper.SQLHelpersqlHelper=newSQLHelper.SQLHelper();SqlParameter[]ParamList={sqlHelper.CreateInParam("@Classid",SqlDbType.Int,4,nClassid)};SqlDataReaderrec=null;try{sqlHelper.RunProc("Get_SingNewsClass",ParamList,outrec);}catch(Exceptionex){SystemError.CreateErrorLog(ex.Message);thrownewException(ex.Message,ex);}NewsClassnewsClass=newNewsClass();while(rec.Read()){newsClass.ClassID=Int32.Parse(rec["ClassID"].ToString());newsClass.ClassName=rec["ClassName"].ToString();}sqlHelper.Close();returnnewsClass;}}}7、建立新聞分類的業(yè)務(wù)邏輯層打開BLL項目類庫,在其中新建一個NewsClassService.cs類文件,用它把從網(wǎng)頁中接收到的數(shù)據(jù)傳遞給NewsClassDAL對象的相關(guān)方法,讀取新聞分類的內(nèi)容。在該類中新建一個Get_NewsClass()方法和一個Get_SingNewsClass()方法。代碼如下:usingSystem.Collections.Generic;usingDAL;usingModel;namespaceBLL{publicclassNewsClassService{publicList<NewsClass>Get_NewsClass(){NewsClassDALnewsClassDAL=newNewsClassDAL();return(newsClassDAL.Get_NewsClass(nParentID));}publicNewsClassGet_SintNewsClass(intnClassid){NewsClassDALnewsClassDAL=newNewsClassDAL();return(newsClassDAL.Get_SintNewsClass(nClassid));}}}8、發(fā)布新聞操作的界面(1)發(fā)布新聞的界面設(shè)計發(fā)布新聞的界面設(shè)計如圖5-1-7所示。圖5-1-7添加新聞的界面右鍵單擊網(wǎng)站項目中的Admin文件夾,選擇“添加新項”,新建一個Add_News.aspx網(wǎng)頁文件。參考圖5-1-7,在Add_News.aspx網(wǎng)頁中用表格布局,建立最簡單的添加新聞操作界面,一般的信息輸入都采用文本框,如輸入標(biāo)題文本的文本框為<asp:TextBoxID="Title"runat="server"></asp:TextBox>,新聞分類采用下拉列表控件,允許用戶從下拉列表中選擇一項,如新聞分類下拉列表控件的代碼為<asp:DropDownListID="ClassID"runat="server"></asp:DropDownList>,新聞內(nèi)容一般需要輸入的文字?jǐn)?shù)量都很大,采用文本區(qū)域控件,在ASP.NET2.0中,文本區(qū)域控件與文件框控件是同一個控件,只要把文件框控件的TextMode屬性設(shè)置為“MultiLine”,文件框控件就變成了文本區(qū)域控件。本實例中輸入新聞內(nèi)容的文本框設(shè)置為<asp:TextBoxid="Content"runat="server"TextMode="MultiLine"Width="850px"Height="300px"></asp:TextBox>。添加新聞操作界面的完整代碼如下:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Add_News.aspx.cs"Inherits="admin_Add_News"%><%@RegisterSrc="Bottom.ascx"TagName="Bottom"TagPrefix="uc1"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="/1999/xhtml"><headrunat="server"><title>添加新聞</title><linkhref="StyleSheet.css"rel="stylesheet"type="text/css"/></head><body><formid="form1"runat="server"><divstyle="background-color:#eeeeee;text-align:center;"><divclass="space5"></div><divclass="h2Bg"><h2>添加新聞</h2></div><divclass="space5"></div></div><tablestyle="margin-top:10px;"><tr><tdclass="rightTd">新聞標(biāo)題:</td><tdclass="cnoBorderTd"><asp:TextBoxID="Title"runat="server"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ControlToValidate="Title"ErrorMessage="新聞標(biāo)題不能為空"></asp:RequiredFieldValidator></td></tr><tr><tdclass="rightTd">來源:</td><tdclass="cnoBorderTd"><asp:TextBoxID="Source"runat="server"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator2"runat="server"ControlToValidate="Source"ErrorMessage="新聞來源不能為空"></asp:RequiredFieldValidator></td></tr><tr><tdclass="rightTd">作者:</td><tdclass="cnoBorderTd"><asp:TextBoxID="Author"runat="server"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator3"runat="server"ControlToValidate="Author"ErrorMessage="作者不能為空"></asp:RequiredFieldValidator></td></tr><tr><tdclass="rightTd">新聞分類:</td><tdclass="cnoBorderTd"><asp:DropDownListID="ClassID"runat="server"></asp:DropDownList><asp:RequiredFieldValidatorID="RequiredFieldValidator4"runat="server"ControlToValidate="ClassID"ErrorMessage="新聞分類不能為空"></asp:RequiredFieldValidator></td></tr><tr><tdclass="rightTd">詳細(xì)內(nèi)容:</td><tdclass="cnoBorderTd"><asp:TextBoxid="Content"runat="server"TextMode="MultiLine"Width="850px"Height="300px"></asp:TextBox><asp:RequiredFieldValidatorID="RequiredFieldValidator5"runat="server"ControlToValidate="Content"ErrorMessage="新聞內(nèi)容不能為空"></asp:RequiredFieldValidator></td></tr><tr><tdclass="rightTd">訪問量:</td><tdclass="cnoBorderTd"><asp:TextBoxID="Click"runat="server">0</asp:TextBox></td></tr><tr><tdclass="rightTd"></td><td><asp:ButtonID="btnAddNews"runat="server"OnClick="btnAddNews_Click"Text="添加"/></td></tr></table><uc1:BottomID="Bottom1"runat="server"/></form></body></html>注意:在上述代碼中應(yīng)用了樣式,有關(guān)本頁應(yīng)用的樣式,請打開StyleSheet.css查看詳細(xì)內(nèi)容,樣式表的編寫方法,請查看項目4中任務(wù)3的相關(guān)知識。在上述代碼中還應(yīng)用了用戶控件Bottom.ascx,該用戶控件的代碼很簡單,僅僅是一個版權(quán)的聲明,使用該用戶控件的目的就是為了不重復(fù)在每一頁都編寫一遍這部分內(nèi)容,以及如果某天需要修改其內(nèi)容,只要改一個地方其它引用這個控件的網(wǎng)頁都被修改了,可以大大減少重復(fù)勞動。數(shù)據(jù)驗證,在每個項目中都必須進(jìn)行數(shù)據(jù)驗證工作。在ASP.NET項目開發(fā)時可以使用ASP.NET的數(shù)據(jù)驗證控件。為確保在添加新聞時每一項都輸入了內(nèi)容,在代碼中為每個輸入項都添加了一個必填數(shù)據(jù)驗證控件RequiredFieldValidator,應(yīng)用該控件時有兩個必填屬性,分別是ControlToValidate和ErrorMessage,ControlToValidate屬性用來設(shè)置要驗證哪個控件,比如要驗證標(biāo)題文本框,請設(shè)置該屬性值為標(biāo)題文本框的ID值,如ControlToValidate="Title",ErrorMessage屬性用來設(shè)置當(dāng)用戶沒用輸入某項時顯示的必須輸入信息的提示,如ErrorMessage="新聞標(biāo)題不能為空"。驗證標(biāo)題文本框的必填驗證控件的完整代碼是:<asp:RequiredFieldValidatorrunat="server"ID="RequiredFieldValidator1"ControlToValidate="Title"ErrorMessage="新聞標(biāo)題不能為空"></asp:RequiredFieldValidator>,在每一個輸入的文本框上都應(yīng)用了必填輸入驗證控件,其代碼與新聞標(biāo)題的驗證控件代碼類似,不再重述。設(shè)計完成后,右鍵單擊Add_News.aspx,選擇“在瀏覽器中查看”,可以看到如圖5-1-7所示的瀏覽效果。(2)發(fā)布新聞的后臺代碼●填充新聞分類下拉列表控件打開添加新聞頁時,讀取新聞分類表的內(nèi)容,填充新聞分類采用下拉列表控件,以 便發(fā)布新聞時選擇使用。填充新聞分類采用下拉列表控件的方法如下://填充新聞分類的DropDownListpublicvoidBinClassData(){NewsClassServicenewsClassService=newNewsClassService();ClassID.DataSource=newsClassService.Get_NewsClass(0);ClassID.DataTextField="ClassName";ClassID.DataValueField="ClassID";ClassID.DataBind();}注意:用這段代碼給下拉列表控件提供數(shù)據(jù)源(DataSource)時,必須同時指定下拉列表控件的文本字段(DataTextField)和值字段(DataValueField),這兩個字段的作用不同,文本字段是顯示給用戶看的,值字段是為后續(xù)程序代碼應(yīng)用的。最后別忘記進(jìn)行數(shù)據(jù)綁定,即執(zhí)行ClassID.DataBind()語句。數(shù)據(jù)綁定完成后,打開添加新聞界面時就可以看到新聞分類下拉列表控件其中已經(jīng)填充了數(shù)據(jù),可以選擇使用,效果如圖5-1-8所示。圖5-1-8新聞分類列表框●讀取各個控件的數(shù)據(jù)實例化一個新聞類,然后就可以讀取各個文件框的值,并賦給新聞實例的各屬性,代碼如下:Newsnews=newNews();news.Title=Title.Text;news.Source=Source.Text;news.Author=Author.Text;news.Content=Content.Text;news.Updatatime=DateTime.Now;news.Click=Int32.Parse(Click.Text);下拉列表控件的數(shù)據(jù)讀取方法與文本框中數(shù)據(jù)有一定的不同。讀取下拉列表控件中被選中項的數(shù)據(jù)的方法:ClassID.SelectedValue。該例中新聞的NewsClass屬性不是C#的基本數(shù)據(jù)類型,而是自定義的新聞分類類型,讀取到下拉列表控件中被選中項的數(shù)據(jù)后,還要利用newsClassService對象把該數(shù)據(jù)轉(zhuǎn)換成新聞分類類型。news.NewsClass=newsClassService.Get_SingNewsClass(Int32.Parse(ClassID.SelectedValue));●把讀取的數(shù)據(jù)寫入數(shù)據(jù)庫在三層應(yīng)用架構(gòu)進(jìn)行項目開發(fā)時,用戶界面不能直接操作數(shù)據(jù)庫,要把讀取的數(shù)據(jù)寫入數(shù)據(jù)庫,只能通過業(yè)務(wù)邏輯層(BLL),調(diào)用NewsService對象的實例newsService的Add_News(news)方法,再通過訪問數(shù)據(jù)訪問層(DAL),調(diào)用NewsDAL對象的實例newsDAL的Add_News(news)方法把數(shù)據(jù)寫入到數(shù)據(jù)庫中。代碼如下:NewsServicenewsService=newNewsService();intnID=newsService.Add_News(news);if(nID>0){Response.Write("<script>alert('添加成功');location.href='Ddeault.aspx';</script>");}else{Response.Write("<script>alert('添加失敗');history.back(1);</script>");}提示:從這段代中看不到數(shù)據(jù)操作的語句,但的確以把數(shù)據(jù)寫入到了數(shù)據(jù)庫,有關(guān)數(shù)據(jù)操作的語句在數(shù)據(jù)訪問層(DAL),NewsDAL對象的Add_News(news)方法中。在這段代碼中不論添加新聞操作成功與失敗都給用戶有提示,在ASP.NET中進(jìn)行提示的方法,一是利用給控件賦值的方法實現(xiàn),二是用javascript實現(xiàn),本實例采用第二種方法。用javascript實現(xiàn)時,實際是用ASP.NET的Response對象的Write方法輸出一段javascript代碼。添加成功后先提示用戶添加成功,再利用javascript的location對象的href屬性來指定轉(zhuǎn)到的網(wǎng)址,這兩步操作的實際代碼為:Response.Write("<script>alert('添加成功');location.href='Ddeault.aspx';</script>")。如果有錯誤發(fā)生,則是先提示用戶,再后退到原來的網(wǎng)址。提示:因為還沒有開發(fā)顯示新聞的網(wǎng)頁,臨時把網(wǎng)址轉(zhuǎn)到Ddeault.aspx,如果開發(fā)了顯示新聞的網(wǎng)頁,就應(yīng)該轉(zhuǎn)到顯示新聞的網(wǎng)頁。●后臺操作的完整代碼如下:usingSystem;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;//引用三層架構(gòu)usingModel;usingBLL;publicpartialclassadmin_Add_News:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){if(!Page.IsPostBack){BinClassData();}}//填充新聞分類的DropDownListpublicvoidBinClassData(){NewsClassServicenewsClassService=newNewsClassService();ClassID.DataSource=newsClassService.Get_NewsClass(0);ClassID.DataT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論