網(wǎng)站貼吧實訓總結(jié)_第1頁
網(wǎng)站貼吧實訓總結(jié)_第2頁
網(wǎng)站貼吧實訓總結(jié)_第3頁
網(wǎng)站貼吧實訓總結(jié)_第4頁
網(wǎng)站貼吧實訓總結(jié)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

網(wǎng)站開發(fā)實習——俱樂部論壇系統(tǒng)開發(fā)總結(jié)學生姓名專業(yè)班級學號院(系)指導教師完成時間2011年12月1日目錄HYPERLINK1.實習目標 4HYPERLINK2.實習項目 4HYPERLINK3.設(shè)計說明書 4HYPERLINK3.1XHTML+CSS進行網(wǎng)頁界面布局 4HYPERLINK3.1.1盒模型(BoxModel) 4HYPERLINK3.1.2Float屬性 5HYPERLINK3項目開發(fā)計劃 7HYPERLINK3.1ASP.NET動態(tài)網(wǎng)站開發(fā) 7HYPERLINK3.2.1母版頁 7HYPERLINK3.2.2訪問數(shù)據(jù)庫 7HYPERLINK3.2.3數(shù)據(jù)驗證 7HYPERLINK3.2.4注冊登錄功能 7HYPERLINK3.3SQLServer 8HYPERLINK4.分析及設(shè)計 8HYPERLINK4.1需求設(shè)計 8HYPERLINK4.2數(shù)據(jù)庫架構(gòu)設(shè)計 8HYPERLINK4.3界面設(shè)計 10HYPERLINK4.4網(wǎng)站具體制作與代碼編寫 10HYPERLINK4.4.1創(chuàng)建數(shù)據(jù)庫 10HYPERLINK4.4.2創(chuàng)建母版頁 12HYPERLINK4.4.3創(chuàng)建登錄頁與注冊頁 13HYPERLINK4.4.4制作發(fā)新帖頁 13HYPERLINK4.4.5實現(xiàn)文本框驗證 20HYPERLINK4.4.6使用QueryString進行頁面間參數(shù)傳遞 21HYPERLINK4.4.7創(chuàng)建管理頁面 21HYPERLINK4.4.8錯誤處理頁面 22HYPERLINK4.5測試截圖 23HYPERLINK5.實驗心得 241.實習目標通過網(wǎng)站的開發(fā),熟悉掌握XHTML+CSS、ASP.NET、SQLServer相關(guān)知識與技能的綜合應(yīng)用,經(jīng)歷一個實際項目的分析、開發(fā)與測試。2.實習項目實習項目要求利用ASP.NET(VisualStudio2008)完成一個俱樂部網(wǎng)站的開發(fā)。本俱樂部網(wǎng)站可以使用戶注冊、登錄,登錄用戶可以對文章進行評論。俱樂部工作人員可以在后臺進行文章的發(fā)布、編輯并對用戶評論進行管理。沃克俱樂部(WalkerClub)要求能夠有一個論壇,使俱樂部成員通過網(wǎng)站進行有關(guān)健走活動、戶外旅游等加強交流與溝通,同時也通過俱樂部網(wǎng)站擴大自己的影響力,以吸引更多的人參加俱樂部,培養(yǎng)健康的生活方式。俱樂部對論壇的要求是:論壇內(nèi)容對所有人開放;只有俱樂部會員可以發(fā)帖及發(fā)評論;俱樂部有專門維護人員,可以對論壇的帖子進行管理;3.設(shè)計說明書3.1XHTML+CSS進行網(wǎng)頁界面布局在動態(tài)網(wǎng)站的開發(fā)中,手工進行XHTML代碼編寫的情況是很少見的,但利用XHTML+CSS進行網(wǎng)頁布局與展示,是網(wǎng)站設(shè)計必須的基本功之一。由于CSS的應(yīng)用,網(wǎng)頁布局現(xiàn)在不再使用表格的方式對網(wǎng)頁進行布局,而是利用CSS中的盒模型和XHTML中的DIV標簽,對網(wǎng)頁進行布局,這種網(wǎng)頁的布局辦法也被稱為DIV+CSS。3.1.1盒模型(BoxModel)網(wǎng)頁設(shè)計中的每個元素都是一個矩形盒。在CSS中,進行設(shè)計和布局時,會用到盒模型。CSS盒模型從本質(zhì)上來說是環(huán)繞在XHTML元素周圍的方框,它由外邊距、邊框、內(nèi)邊距和實際內(nèi)容組成。盒模型允許放置元素周圍的邊框及周圍相關(guān)元素。圖1闡釋了盒模型:圖1CSS盒模型為了能在所有的瀏覽器中正確地設(shè)置元素的寬(width)和高(height),需要了解盒模型的工作原理。當一個元素的寬和高被CSS定義后,它設(shè)置的僅僅是內(nèi)容區(qū)域的寬度和高度。元素(盒)的總寬度還包括內(nèi)邊距(padding)、邊框(border)和外邊距(margin),如下例子中元素的總寬度為300px.element1{width:250px;

padding:10px;

border:5pxsolidgray;

margin:10px;}計算過程如下:250px(寬度)+20px(左右內(nèi)邊距)+10px(左右邊框)+20px(左右外邊距)=300px元素(盒模型)的總寬度與總高度應(yīng)當這樣計算:盒的總寬度=width+padding-left+padding-right+border-left+border-right+margin-left+margin-right盒的總高度=height+padding-top+padding-bottom+border-top+border-bottom+margin-top+margin-bottom3.1.2Float屬性XHTML的div元素所形成的盒子(box),默認情況下,是垂直分布的,即水平方向只能有一個盒子,另外一個盒子只能排列在前一個盒子的下方,在CSS術(shù)語中,這種元素叫做塊級元素(BlockElements),h1、p這些元素都是塊級元素;默認情況下可以在水平方向分布的元素,被稱作行內(nèi)元素(InlineElements),如span、a都是行內(nèi)元素。如例1。例1塊級元素與行內(nèi)元素<html><body> <div>第一個塊級元素</div> <div>第二個塊級元素,出現(xiàn)在第一個塊級元素下方</div> <ahref="#">超鏈是行內(nèi)元素,這是第一個行內(nèi)元素</a> <ahref="#">第二個行內(nèi)元素,水平方向位于前一個行內(nèi)元素右邊</a></body></html>網(wǎng)頁布局中,為使水平方向可以并行出現(xiàn)兩個或者兩個以上的例子,需要使用CSS的float屬性,能夠使盒子在水平方向上浮動。將例1中的div元素加入float屬性,如例2例2利用CSSfloat屬性<html><body> <divstyle="float:left;border:1pxsolidred">第一個塊級元素</div> <divstyle="float:left;border:1pxsolidred">第二個塊級元素,加入float屬性后出現(xiàn)在第一個塊級元素右邊</div> <divstyle="clear:both"></div> <ahref="#">超鏈是行內(nèi)元素,這是第一個行內(nèi)元素</a> <ahref="#">第二個行內(nèi)元素,水平方向位于前一個行內(nèi)元素右邊</a></body></html>3項目開發(fā)計劃3.1ASP.NET動態(tài)網(wǎng)站開發(fā)在ASP.NET之前,微軟的動態(tài)Web編程技術(shù)稱為ActiveServerPages(ASP,動態(tài)服務(wù)器頁面),ASP是微軟公司開發(fā)的代替CGI腳本程序的一種應(yīng)用,它可以與數(shù)據(jù)庫和其它程序進行交互,是一種簡單、方便的編程工具。盡管ASP對于創(chuàng)建動態(tài)網(wǎng)站在當時是一種流行的選擇,但是它缺乏其它編程技術(shù)中的一些重要功能(比如ASP不支持對面向?qū)ο蠹夹g(shù)),微軟推出ASP.NET以彌補ASP的缺點。ASP.NET1.0版本于2002年1月發(fā)布,到2005年,ASP.NET2.0版本發(fā)布,成為動態(tài)網(wǎng)站開發(fā)的主流選擇,2007年底,隨同VisualStudio2008一起,微軟發(fā)布了ASP.NET3.5,將AJAX技術(shù)結(jié)合為ASP.NET的標準配置,使得開發(fā)動態(tài)網(wǎng)站變得前所未有的簡單與高效。3.2.1母版頁母版頁就像是PPT文件中的模板,使用母版頁后,所有的頁面都有統(tǒng)一的風格,如頁頭與頁尾。母版頁不限于只有一個,比如主頁為一個母版頁,欄目為一個母版頁,具體內(nèi)容頁面為另外一個母版頁,可以使用DIV+CSS制作好的頁面布局,導入母版頁。具體操作辦法參見實習步驟。3.2.2訪問數(shù)據(jù)庫動態(tài)網(wǎng)站區(qū)分于靜態(tài)網(wǎng)站,就是動態(tài)網(wǎng)站可以訪問數(shù)據(jù)庫。ASP.NET訪問數(shù)據(jù)庫有多種辦法,其中SQL語句是最基本的要求。ASP.NET提供有數(shù)據(jù)源控件和數(shù)據(jù)綁定控件(在【工具箱】的【數(shù)據(jù)】選項卡內(nèi)),可以對數(shù)據(jù)庫進行快捷的訪問,本實習部分采用這種辦法。為了分層開發(fā)架構(gòu)的開發(fā),本實習還采用ADO.NET技術(shù),結(jié)合數(shù)據(jù)庫存儲過程完成分層架構(gòu)的開發(fā)。3.2.3數(shù)據(jù)驗證ASP.NET提供了簡單易用的數(shù)據(jù)驗證辦法,在用戶沒有輸入應(yīng)該輸入的數(shù)據(jù)或者格式出現(xiàn)錯誤時,系統(tǒng)可以發(fā)出提示信息,指導用戶輸入正確格式的數(shù)據(jù)。3.2.4注冊登錄功能ASP.NET3.5集成的安全功能,可以迅速完成用戶注冊頁面、登錄頁面及用戶修改口令等功能,具體操作見操作步驟。3.3SQLServerSQLServer是微軟公司出品的數(shù)據(jù)庫管理系統(tǒng),可以與VS2008完美結(jié)合。本實習采用SQLServer數(shù)據(jù)庫,在本應(yīng)用中,SQLServer2000以上的版本都可以完成工作。VS2008的集成開發(fā)環(huán)境(IDE)可以在其內(nèi)部就完成數(shù)據(jù)庫的創(chuàng)建與操作。本實習主要完成數(shù)據(jù)庫、數(shù)據(jù)表的創(chuàng)建與修改,存儲過程的創(chuàng)建與修改。4.分析及設(shè)計4.1需求設(shè)計根據(jù)沃克俱樂部所提出的要求,分析該論壇的技術(shù)層次需要如下:網(wǎng)站應(yīng)該能夠支持用戶賬戶;所有用戶,無論登錄或者未登錄,都可以瀏覽網(wǎng)站上的帖子及評論;只有通過認證的用戶才可以發(fā)帖子或評論;通過認證的用戶發(fā)帖子時,必須提供帖子標題、內(nèi)容并選擇版塊;通過認證的用戶發(fā)評論時,必須是針對某一個帖子進行發(fā)表;每個論壇版塊都有至少1個版主,版主可以對本版塊的帖子進行管理,如置頂、刪除操作需要有一個特別的認證賬戶(網(wǎng)站管理員)可以對所有的用戶進行管理,能夠更換版主,同時可以對網(wǎng)站上所有帖子、評論進行管理4.2數(shù)據(jù)庫架構(gòu)設(shè)計當把ASP.NET設(shè)置為基于窗體的身份驗證類型之后,系統(tǒng)會自動創(chuàng)建一個ASPNETDB.MDF數(shù)據(jù)庫,并且定義了一系列的數(shù)據(jù)庫表,創(chuàng)建用戶賬戶。現(xiàn)在需要做的是,根據(jù)上一小節(jié)的分析定義除系統(tǒng)數(shù)據(jù)庫表之外其它的表結(jié)構(gòu)。根據(jù)分析,需要三個需要手工創(chuàng)建的表:Columns:版塊表,用來定義俱樂部論壇不同的版塊,如健走活動、騎行聯(lián)盟等。Posts:帖子表,會員發(fā)布的帖子將被保存在本數(shù)據(jù)庫表中作為一條記錄,包括標題、內(nèi)容、發(fā)布時間等。Comments:評論表,會員根據(jù)某個具體的帖子發(fā)布的評論將在本表中被保存為一條記錄,包括內(nèi)容、評論時間等。2.數(shù)據(jù)庫表結(jié)構(gòu)表1版塊表(表名Columns)結(jié)構(gòu)列名數(shù)據(jù)類型與長度屬性列名含義說明ColumnIdint主鍵自動遞增ColumnNamenvarchar(10)不允許空版塊名稱表2帖子表(表名Posts)結(jié)構(gòu)列名數(shù)據(jù)類型與長度屬性列名含義說明PostIdint主鍵自動遞增UserIduniqueidentifier外鍵用戶IdColumnIdint外鍵版塊IdTitlenvarchar(40)不允許空帖子標題Postnvarchar(4000)不允許空帖子內(nèi)容SubmitDatedatetime不允許空發(fā)布日期ShowFlagbit不允許空是否顯示標志VisitNumint允許空訪問次數(shù)ReplyNumint允許空回復次數(shù)表3評論表(表名Comments)結(jié)構(gòu)列名數(shù)據(jù)類型與長度屬性列名含義說明CommentIdint主鍵自動遞增PostIdint外鍵帖子IdUserIduniqueidentifier外鍵用戶IdCommentnvarchar(1000)不允許空評論內(nèi)容SubmitDatedatetime不允許空評論日期ShowFlagbit不允許空是否顯示標記說明UserId的數(shù)據(jù)類型是uniqueidentifier,與ASPNETDB數(shù)據(jù)庫中aspnet_Users的主鍵UserId數(shù)據(jù)類型一致。這是一個確保全球唯一的極大的數(shù),用于唯一識別用戶賬戶。4.3界面設(shè)計用戶界面是應(yīng)用的前端部分,用戶通過用戶界面與系統(tǒng)交互。對于Web網(wǎng)站應(yīng)用系統(tǒng)來說,用戶界面是網(wǎng)站的一系列網(wǎng)頁。用戶對網(wǎng)站質(zhì)量的判斷,大多是來自于對網(wǎng)頁可用性、快捷性的評價,所以確保網(wǎng)頁用戶界面的直觀及方便非常重要。論壇網(wǎng)站需要如下網(wǎng)頁:主頁:在該網(wǎng)頁中,匿名用戶會看到一個“登錄”和“注冊”鏈接,而已登錄用戶則可以進行發(fā)新帖與發(fā)評論的操作,如果已認證用戶為管理員或版主,則可以進行帖子與評論管理。版塊頁:版塊頁將列出本版塊全部允許顯示的帖子,包括帖子標題、作者及發(fā)布日期。發(fā)新帖頁:該網(wǎng)頁只能被已認證用戶打開訪問,用戶可以在該網(wǎng)頁中發(fā)新帖,包括標題、內(nèi)容與版塊,用戶名及發(fā)布時間則根據(jù)當前用戶及當前時間自動由系統(tǒng)提交。帖子詳細內(nèi)容頁:該網(wǎng)頁顯示帖子詳細內(nèi)容及對于該帖的評論,匿名用戶只能瀏覽該網(wǎng)頁,已認證用戶可以添加新評論。管理頁:網(wǎng)站管理員、版主可以對帖子及評論進行管理,網(wǎng)站管理員還可以對用戶進行管理,比如屏蔽用戶及調(diào)整版主。雖然一個動態(tài)網(wǎng)站可能由幾十個、幾百個甚至上千個網(wǎng)頁組成,但其實質(zhì)只有幾個網(wǎng)頁,通過參數(shù)傳遞的方式,顯示眾多的網(wǎng)頁。比如帖子詳細內(nèi)容頁,即使有幾千條帖子,但查看帖子詳細內(nèi)容時,都是通過調(diào)用數(shù)據(jù)庫中不同的記錄,在帖子詳細內(nèi)容頁這一個頁面中顯示出來。4.4網(wǎng)站具體制作與代碼編寫4.4.1創(chuàng)建數(shù)據(jù)庫1、創(chuàng)建用戶與數(shù)據(jù)庫(1)打開VS2008,選擇菜單【文件】|【新建網(wǎng)站】,將網(wǎng)站位置選擇為“文件系統(tǒng)”,目錄命名為“ClubForum”,語言選擇為“VisualC#”;選擇菜單【網(wǎng)站】|【ASP.NET配置】,出現(xiàn)【ASP.NET網(wǎng)站管理工具】歡迎頁面;(2)單擊頁面上部的【安全】選項卡(或中部的【安全】鏈接),此時可以進行創(chuàng)建用戶、創(chuàng)建角色及身份驗證類型設(shè)置;(3)單擊界面左下角【選擇身份驗證類型】鏈接,默認設(shè)置是【通過本地網(wǎng)絡(luò)】單選鈕,即Windows身份驗證,單擊【通過Internet】單選鈕,將其設(shè)置為基于窗體的安全,單擊【完成】按鈕返回;(4)在返回的界面中,【用戶】窗格由于身份驗證類型已經(jīng)改為基于窗體的安全,因此現(xiàn)在可以創(chuàng)建用戶及管理用戶,(5)單擊【創(chuàng)建用戶】鏈接,提示進行用戶名、密碼等的輸入,在輸入時,注意保證左下角的【活動用戶】復選框為選中狀態(tài)(默認為選中),否則用戶將無法登錄網(wǎng)站。用戶賬戶內(nèi)容的輸入會進行驗證檢查,比如保證用戶名為唯一,密碼滿足特定強度(默認至少為七個字符長,并至少包含一個非字母數(shù)據(jù)字符),電子郵件符合正確格式等,如果輸入無效數(shù)據(jù),將顯示驗證錯誤消息,禁止創(chuàng)建新用戶。如果沒有錯誤,單擊【創(chuàng)建用戶】按鈕,有創(chuàng)建用戶完成的信息提示,用戶創(chuàng)建完成。在【ASP.NET網(wǎng)站管理工具】頁面內(nèi),創(chuàng)建一個用戶名Admin,再創(chuàng)建幾個普通用戶,用戶名自己設(shè)定,注意記錄下密碼,供以后使用(數(shù)據(jù)表中的密碼已經(jīng)被加密,無法看出明文密碼)。同時創(chuàng)建一個Administrator用戶角色,將用戶名Admin加入這個角色。在設(shè)置基于窗體的安全之后,系統(tǒng)會自動創(chuàng)建一個名為ASPNETDB的數(shù)據(jù)庫。關(guān)閉ASP.NET管理工具,進入ClubForum網(wǎng)站,在解決方案資源管理器中,單擊上方的【刷新】按鈕,再單擊App_Data文件夾前邊的“+”號,可以看到該文件夾中存在一個系統(tǒng)新建的數(shù)據(jù)庫ASPNETDB.MDF。進入數(shù)據(jù)庫資源管理器,觀察ASPNETDB數(shù)據(jù)庫的表,其中有11個系統(tǒng)表。有兩個表與賬戶密切相關(guān),它們是aspnet_Users和aspnet_Membership,這兩個表存儲用戶的賬戶信息,對網(wǎng)站的每個注冊用戶,這兩個表中將有一條對應(yīng)的記錄。aspnet_Users表包含標識用戶的基本列,特別是用戶名。aspnet_Membership表包含注冊用戶所提供的信息,如電子郵件地址、密碼、賬戶創(chuàng)建時間、安全問題與答案、用戶是否為活動狀態(tài)等。ASPNETDB數(shù)據(jù)庫,尤其是aspnet_Users和aspnet_Membership數(shù)據(jù)庫表,將在實際的網(wǎng)站開發(fā)中有極大的用處。2、在【服務(wù)器資源管理器】界面,單擊“ASPNETDB.MDF”前面的“+”號,右擊【表】,單擊【添加新表】,將4.2討論的數(shù)據(jù)表結(jié)構(gòu)創(chuàng)建三個新表。并在Columns表中添加兩到三條記錄,如健走、騎行、游泳等,作為實驗數(shù)據(jù)供開發(fā)使用。3、連接數(shù)據(jù)庫數(shù)據(jù)庫的連接方式在web.config文件中設(shè)置。通過在appSetting元素中添加一個數(shù)據(jù)庫連接字符串ConnectionString來實現(xiàn),代碼如下:<appSettings><addkey="ConnectionString"value="DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;IntegratedSecurity=True;UserInstance=True"/></appSettings>其中的value值為連接字符串,可以在第2步中右擊“ASPNETDB.MDF”文件,選擇【屬性】,查找其“連接字符串”屬性,將其屬性值復制粘貼即可。4.4.2創(chuàng)建母版頁在【解決方案資源管理器】右擊,單擊【添加新項】,在對話框中選擇【母版頁】,使用默認文件名,MasterPage.master,在【源】視圖,可以把<head>部分的<asp:ContentPlaceHolder>元素刪除,只保留<body>部分的元素,將已經(jīng)制作好的網(wǎng)頁布局的頁頭部分HTML代碼放入<body>部分的<asp:ContentPlaceHolderid="ContentPlaceHolder1"runat="server"></asp:ContentPlaceHolder>上部,將頁腳部分放入其下部,將正文部分放入其中間,這樣的結(jié)果,以后所有以這個母版頁為母版的頁面,都有相同的頁頭與頁腳。刪除創(chuàng)建網(wǎng)站時默認建立的Default.aspx頁面,重新創(chuàng)建一個主頁名為Index.aspx,注意在【添加新項】對話框,保證【選擇母版頁】選項被選中,這時就可以選擇已經(jīng)制作好的母版頁。以后的頁面都要選定這個母版頁,保證整個網(wǎng)站的頁面是統(tǒng)一風格。如果要設(shè)定主頁、欄目頁及帖子詳細內(nèi)容頁的正文部分有不同的布局,可以在具體的頁面內(nèi)進行調(diào)整。在主頁Index.aspx的<asp:ContentPlaceHolder>元素內(nèi),將前述網(wǎng)頁布局(例3)正文部分內(nèi)容放入,在【設(shè)計】視圖檢查效果。4.4.3創(chuàng)建登錄頁與注冊頁登錄頁命名為Login.aspx,注冊頁命名為Register.aspx,注意這兩個網(wǎng)頁的母版頁仍然選擇MasterPage.master,將【工具箱】中【登錄】內(nèi)的控件Login和CreateUserWizard分別拖放到這兩個網(wǎng)頁上,即完成了登錄頁面與注冊頁面的制作。如果想把用戶登錄功能做到主頁上并提供更好的用戶體驗界面,可以調(diào)整Login控件,并結(jié)合【登錄】選項卡內(nèi)的其它控件如LoginView、LoginName等,制作到主頁上。4.4.4制作發(fā)新帖頁創(chuàng)建一個發(fā)新帖的頁面,命名為NewPost.aspx。已登錄用戶可以使用這個頁面發(fā)新帖,實際對應(yīng)于在數(shù)據(jù)表Posts中加入一條新記錄。要加入一條新記錄,需要提供這條記錄需要的所有字段的值。注意這些字段的值,需要用戶提供只有三個,標題(Title)、內(nèi)容(Post)和欄目(ColumnId),其它字段的值由數(shù)據(jù)表自動生成(如PostId)或系統(tǒng)提供(如UserId)。由于需要用戶提供的信息只有欄目、標題與內(nèi)容,所以在NewPost.aspx頁面添加三個控件,對應(yīng)這三個信息由用戶選擇或輸入,具體控件的布局由自己完成。DropDownList控件的數(shù)據(jù)綁定首先拖放一個DropDownList控件到頁面,將其命名為ddlColumn,這個下拉框為用戶提供可選欄目,其工作原理為:用戶在下拉框中按欄目名稱進行選擇(從Columns表中提取的ColumnName信息),相應(yīng)存入到Posts數(shù)據(jù)表中的數(shù)據(jù)是欄目名稱對應(yīng)的ColumnId值而不是ColumnName值。具體操作辦法如下:單擊DropDownList的智能標簽,【選擇數(shù)據(jù)源】|【新建數(shù)據(jù)源…】,選擇【數(shù)據(jù)庫】,在下拉列表框中選擇ASPNETDB.MDF,在數(shù)據(jù)庫中選擇Columns數(shù)據(jù)表,選擇該數(shù)據(jù)表的所有字段(ColumnId與ColumnName),單擊【下一步】|【完成】,在【數(shù)據(jù)源配置向?qū)А績?nèi),將顯示的數(shù)據(jù)字段選擇為ColumnName,將值數(shù)據(jù)字段選擇為ColumnId,如圖2所示,本工作完成了下拉列表框顯示給用戶為一個值(ColumnName),綁定到數(shù)據(jù)表時為另外一個值(ColumnId)。圖2配置DrowDownList控件頁面制作本頁面實現(xiàn)分為兩層,一是用戶表示層(PL),前述的.aspx頁面文件及.aspx.cs代碼隱藏文件均屬于這一層,主要負責處理用戶的各種操作,處理各種控件的事件響應(yīng)。另外一層是數(shù)據(jù)訪問層(DAL),對數(shù)據(jù)庫服務(wù)器的所有調(diào)用都是通過數(shù)據(jù)訪問層進行。一個設(shè)計良好的數(shù)據(jù)訪問層可以使業(yè)務(wù)邏輯層的實現(xiàn)快速簡潔,同時封裝了對底層數(shù)據(jù)庫的訪問而使得整個系統(tǒng)層次分明、易于擴展。這一層由ClubForumDBO數(shù)據(jù)庫訪問公共類實現(xiàn)。拖放一個TextBox控件到上述控件下面,命名為txtTitle,再拖放一個TextBox控件到txtTitle下面,將其命名為txtPost,將其TextMode屬性設(shè)置為MultiLine。適當調(diào)整控件大小,使頁面美觀。在頁面最下方,添加兩個Button控件,分別命名為btnSubmit和btnCancel,顯示文字分別為“發(fā)布”和“清空”?!扒蹇铡卑粹o的工作很簡單,就是將標題和帖子內(nèi)容清空,雙擊“清空”按鈕,進行代碼編輯,鍵入如下代碼(加粗部分):protectedvoidbtnCancel_Click(objectsender,EventArgse){txtTitle.Text="";txtPost.Text="";}進入NewPost.aspx.cs代碼文件中,在Page_Load事件內(nèi)鍵入如下代碼(加粗部分):protectedvoidPage_Load(objectsender,EventArgse){if(!User.Identity.IsAuthenticated)Response.Redirect("Index.aspx");}說明User.Identity.IsAuthenticated是一個布爾值,如果用戶通過身份驗證,該值為True,否則為False;Response.Redirect()為頁面重定向方法。粗體代碼首先判斷用戶是否為通過驗證用戶,如果沒有通過身份驗證,則將頁面重定向到網(wǎng)站主頁Index.aspx;如果用戶通過身份驗證(成功登錄),則不執(zhí)行重定向方法,進入NewPost.aspx頁面。雙擊NewPost.aspx頁面上的“發(fā)布”按鈕,鍵入如下代碼(加粗部分):protectedvoidbtnSubmit_Click(objectsender,EventArgse){//獲取當前登錄用戶的UserIdstringuserid=Membership.GetUser().ProviderUserKey.ToString();//從ddlColumn獲取被選定項的值,并轉(zhuǎn)換為int類型//注意不能用(int)的辦法強制轉(zhuǎn)換,因為它只是類型轉(zhuǎn)換,用下面的兩種辦法之一都做到了內(nèi)容轉(zhuǎn)換intcolumnid=Int32.Parse(ddlColumn.SelectedValue);//intcolumnid=Convert.ToInt32(ddlColumn.SelectedValue);stringtitle=txtTitle.Text;stringpost=txtPost.Text;//調(diào)用數(shù)據(jù)庫訪問類,并調(diào)用NewPost()方法發(fā)布新帖ClubForumDBOnewpost=newClubForumDBO();newpost.NewPost(userid,columnid,title,post);}在上一步驟的C#代碼中(NewPost.aspx.cs文件),需要加入命名空間System.Web.Security,亦即把下面代碼(粗體部分)加入到代碼最上面部分,這樣才可以保證Membership正常工作:usingSystem.Web.Security;2、數(shù)據(jù)訪問層發(fā)新帖子由ClubForumDBO類的NewPost()方法完成,其代碼包含在公共類ClubForumDBO.cs中ClubForumDBO.cs創(chuàng)建辦法:在【解決方案資源管理器】中,右擊解決方案名,選擇【添加ASP.NET文件夾】|【App_Code】,然后在【App_Code】文件夾上右擊,選擇【添加新項】|【類】,命名為“ClubForumDBO.cs”,【確定】。雙擊文件名“ClubForumDBO.cs”即可對其進行編輯。//可以指明SQL命令操作類型的命名空間usingSystem.Data;//可以使用配置文件web.config中的配置命名空間usingSystem.Configuration;//可以使用SQL命令命名空間usingSystem.Data.SqlClient;publicboolNewPost(stringUserId,intColumnId,stringTitle,stringPost){//創(chuàng)建數(shù)據(jù)庫連接和命令對象,AddPost為存儲過程SqlConnectionconn=newSqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);SqlCommandcomm=newSqlCommand("AddPost",conn);//指明Sql命令的操作類型是使用存儲過程//這部分如果智能感知不起作用,注意使用usingSystem.Data.SqlClientcomm.CommandType=CommandType.StoredProcedure;//為存儲過程添加參數(shù)SqlParameterpUserId=newSqlParameter("@UserId",SqlDbType.VarChar,36);pUserId.Value=UserId;comm.Parameters.Add(pUserId);SqlParameterpColumnId=newSqlParameter("@ColumnId",SqlDbType.Int,4);pColumnId.Value=ColumnId;comm.Parameters.Add(pColumnId);SqlParameterpTitle=newSqlParameter("@Title",SqlDbType.NVarChar,40);pTitle.Value=Title;comm.Parameters.Add(pTitle);SqlParameterpPost=newSqlParameter("@Post",SqlDbType.Nvarchar,4000);pPost.Value=Post;comm.Parameters.Add(pPost);//打開數(shù)據(jù)庫連接并執(zhí)行Sql命令try{//openDBconnectionconn.Open();//ExecuteDBSqlcommandcomm.ExecuteNonQuery();//SucceedinexecutingSqlcommandreturntrue;}catch{//failtoexecuteSQLcommandreturnfalse;}finally{//closeDBconnectionconn.Close();}}AddPost是存儲過程名稱。為保證系統(tǒng)具備良好的可擴展性,業(yè)務(wù)規(guī)則可以以存儲過程方式存放在數(shù)據(jù)庫服務(wù)器上。利用存儲過程,數(shù)據(jù)庫操作可以封裝在單個命令中,為獲取最佳性能而進行優(yōu)化并通過附加的安全性得到增強。建議網(wǎng)站開發(fā)中,大量使用高效簡潔的存儲過程簡化編程。創(chuàng)建存儲過程的辦法是:進入【服務(wù)器資源管理器】窗口,在“ASPNETDB.MDF”下【存儲過程】右擊,單擊選擇【添加新存儲過程】,一個新的存儲過程建立在工作區(qū),修改為如下代碼:CREATEPROCEDUREdbo.AddPost ( @UserIduniqueidentifier, @ColumnIdint, @Titlenvarchar(40), @Postnvarchar(4000) )AS INSERTINTOPosts ( UserId, ColumnId, Title, Post, SubmitDate, ShowFlag, VisitNum, ReplyNum ) VALUES ( @UserId, @ColumnId, @Title, @Post, getdate(), 'true', 0, 0 ) RETURN 測試NewPost.aspx頁面:在【解決方案資源管理器】,右擊“NewPost.aspx”,選擇【在瀏覽器中查看】,運行出來的頁面不是NewPost.aspx頁面,而是Index.aspx頁面!這是由于不是登錄用戶,所以被代碼(Page_Load中)定向到主頁。可以使用Register.aspx頁面注冊一個用戶,使用這個注冊用戶到Login.aspx頁面登錄,登錄后,再到NewPost.aspx頁面選擇欄目,輸入標題及帖子內(nèi)容,單擊【發(fā)布】按鈕。測試分析報告1、仔細體味本頁面的制作方式,其它頁面的制作也是類似本頁面的辦法完成。首先制作用戶界面,即.aspx及.aspx.cs文件;然后根據(jù)與數(shù)據(jù)庫的互動要求,完成公共類代碼的制作及存儲過程的制作。2、完成后,對頁面進行調(diào)試與測試,盡量測試各種可能性,使每一部分代碼都可能運行到。3、本頁面可以做一些完善。比如制作本頁面與主頁、主頁與本頁面等相關(guān)的鏈接,用戶單擊【發(fā)布】按鈕后,彈出一個信息框,告訴用戶新帖子發(fā)布成功與否(提示:注意代碼中,發(fā)布成功返回值為true,發(fā)布失敗則為false)4、本頁面可以做另外一種完善:用戶單擊【發(fā)布】按鈕后,如果發(fā)布成功,直接顯示已經(jīng)發(fā)布的新帖子。完成這種做法的提示:需要改動存儲過程,讓其返回這個新加帖子的PostId,并使用Response.Redirect()方法轉(zhuǎn)至帖子詳細內(nèi)容顯示頁面(可以起名為Post.aspx),要精確轉(zhuǎn)到這個新帖子,需要QueryString的參數(shù)傳遞,見4.4.6內(nèi)容。4.4.5實現(xiàn)文本框驗證NewPost.aspx頁面中,帖子標題和內(nèi)容是不允許為空的。因此,需要對標題和內(nèi)容這兩個文本框進行驗證。可以使用【工具箱】|【驗證】中的RequiredFieldValidator控件,對它們完成驗證。拖放一個RequiredFieldValidator控件到txtTitle后面,設(shè)置為ControlToValidate屬性為txtTitle,ErrorMessage屬性為“標題不能為空”;類似地,再拖放一個RequiredFieldValidator控件到txtPost后面設(shè)置。在數(shù)據(jù)表設(shè)計中,Posts表中的Title字段設(shè)置為nvarchar(40),指定這個字段最多可容納40個字(雙字節(jié),可以是漢字,也可以是英文字母,包括空格),所以可以在前臺設(shè)置txtTitle最多只可以輸入40個字,設(shè)置辦法是將txtTitle的MaxLength屬性設(shè)定為40。從經(jīng)驗上來說,這個MaxLength最好是比相應(yīng)字段的最大字數(shù)少一兩個字,比如字段最多允許40個漢字,MaxLength設(shè)置為38、39較合適。如果想讓標題容納字數(shù)更多,把字段定義改動即可,如改成nvarchar(100)。4.4.6使用QueryString進行頁面間參數(shù)傳遞QueryString是一種常見的頁面間參數(shù)傳遞使用的方法。比如你在中查詢“ASP.NET開發(fā)”,搜索后,瀏覽器地址欄的內(nèi)容類似于“/search?q=ASP.NET開發(fā)”(當然漢字及空格之類可能使用Unicode的格式顯示)樣式,其中問號后面的內(nèi)容,即被稱為QueryString。它是表單的Get方法,亦即默認方法。要做好頁面間參數(shù)傳遞,至少要做兩個網(wǎng)頁,一個網(wǎng)頁傳遞參數(shù),一個網(wǎng)頁接收參數(shù)?,F(xiàn)在制作兩個網(wǎng)頁,一個是Index.aspx,即主頁,另外一個是Post.aspx,用這個頁面顯示帖子及評論的詳細內(nèi)容。完成QueryString傳遞有多種辦法,比較簡單的辦法是直接利用【工具箱】|【數(shù)據(jù)】中的數(shù)據(jù)源控件與數(shù)據(jù)綁定控件完成,不寫一行代碼即可完成,具體辦法可參考以下鏈接:這種辦法適合于輕量級開發(fā),就是說數(shù)據(jù)庫、業(yè)務(wù)邏輯沒有大的變化,網(wǎng)站屬于中小型網(wǎng)站,可以使用這種辦法。如果是比較大的項目,或者數(shù)據(jù)庫、業(yè)務(wù)邏輯變化較多,可以采用前面所述的分層架構(gòu)來完成,辦法提示:使用【數(shù)據(jù)】選項卡中的數(shù)據(jù)綁定控件或普通控件,數(shù)據(jù)源不使用【數(shù)據(jù)】選項卡中的數(shù)據(jù)源控件,而是利用存儲過程完成記錄的提取,頁面將QueryString傳來的參數(shù)捕獲,以捕獲的這個參數(shù)做為存儲過程的輸入?yún)?shù),做為存儲過程的WHERE子句中的查詢條件,存儲過程返回的結(jié)果(可以考慮使用輸出參數(shù))與相應(yīng)的數(shù)據(jù)綁定控件或者普通控件綁定顯示,即可以完成任務(wù)。4.4.7創(chuàng)建管理頁面論壇版主可以屏蔽帖子,網(wǎng)站管理員可以管理用戶與版主,這些功能是普通用戶不具備的。因此,需要一個專門的管理頁面,僅供版主和網(wǎng)站管理員使用。創(chuàng)建Moderator(版主)和Admin(管理員)兩個角色。Moderator內(nèi)包括所有的版主賬號(如果管理員賬號也有版主功能,可將管理員賬號也放入Moderator角色),Admin包括管理員賬號。判斷登錄用戶是否為某個角色,使用User.IsInRole(“Rolename”)來判斷。比如:if(User.IsInRole(“Admin

溫馨提示

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

評論

0/150

提交評論