本科畢業(yè)設計基于ASP.NET MVC的動態(tài)虛擬社區(qū)開題報告_第1頁
本科畢業(yè)設計基于ASP.NET MVC的動態(tài)虛擬社區(qū)開題報告_第2頁
本科畢業(yè)設計基于ASP.NET MVC的動態(tài)虛擬社區(qū)開題報告_第3頁
本科畢業(yè)設計基于ASP.NET MVC的動態(tài)虛擬社區(qū)開題報告_第4頁
本科畢業(yè)設計基于ASP.NET MVC的動態(tài)虛擬社區(qū)開題報告_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、本科畢業(yè)設計(論文)開題報告 系 別 信息技術(shù)系 專 業(yè) 計算機科學與技術(shù) 交稿日期 教務處制一、開題報告畢業(yè)設計(論文)題目基于ASP.NET MVC的動態(tài)虛擬社區(qū)課題背景和意義:互聯(lián)網(wǎng)在近幾年中發(fā)展的速度可謂相當迅猛,而互聯(lián)網(wǎng)的便利性也是顯而易見的,其應用范圍相當廣泛。人們現(xiàn)在可以不用出門就獲悉發(fā)生在全國乃至整個世界的新聞。不僅僅是新聞這一方面,當今社會人們在網(wǎng)絡上的社交活動也同樣是越來越多。以前人們使用計算機來聯(lián)系也許只是發(fā)送一些消息、幾封E-mail而已,不過現(xiàn)在有了更多的選擇。隨著計算機硬件制造技術(shù)的不斷提高,處理、計算能力的不斷強化,再配合互聯(lián)網(wǎng),使得網(wǎng)上虛擬社區(qū)的建立成為可能。建

2、立動態(tài)虛擬社區(qū),提供給用戶一個平臺,讓不同用戶之間能夠交流,分享生活信息,共同娛樂,還能得到屬于自己的一個主頁(也就是博客),讓用戶能夠充分發(fā)揮自己的創(chuàng)造力。在虛擬的社區(qū)中展現(xiàn)自己,為自己的生活增添光彩、增添樂趣。本動態(tài)虛擬社區(qū)網(wǎng)站主要使用ASP.NET MVC這個最新最前沿的技術(shù)進行開發(fā)。MVC(Model-View-Controller)用于表示一種軟件架構(gòu)模式。它把軟件系統(tǒng)分為三個基本部分:模型(Model),視圖(View)和控制器(Controller)。 這種模式具有以下一系列優(yōu)點:1. 通過把項目分成Model、View和Controller,各個模塊之間內(nèi)聚程度得到了提高,減少

3、了耦合,對于復雜項目來說更加容易維護。2. 沒有使用View State和服務器表單控件,可以更方便的控制應用程序的行為.3. 應用程序通過Controller來控制程序請求,可以提供豐富的URL重寫。4. 對單元測試的支持更加出色。5. 在團隊開發(fā)模式下表現(xiàn)更出眾。研究的主要內(nèi)容:將使用ASP.NET MVC技術(shù)、SQL Server 2008和UModel 2009等軟件完成一個虛擬社區(qū)網(wǎng)站的建設。虛擬社區(qū)網(wǎng)站提供給用戶一個交流展示,獲取信息的平臺。用戶能夠在網(wǎng)站中注冊自己的賬號,建立博客,分享信息,一起玩游戲等。虛擬社區(qū)有俱樂部功能,形式和論壇相似。系統(tǒng)要求具備良好的人機交互界面,要進行

4、嚴格的測試以保證系統(tǒng)的可靠性,具備可擴展性和可維護性。研究方法(或技術(shù)路線):使用UML語言來對網(wǎng)站的整體功能進行建模。選擇ASP.NET MVC進行網(wǎng)站頁面及主體程序代碼的編寫,后臺數(shù)據(jù)庫由SQL Server 2008支持。預期結(jié)果:1. 畢業(yè)設計開題報告2. 有關(guān)的外文翻譯和文獻綜述3. 畢業(yè)設計中期自檢報告4. 包含UML模型的分析和網(wǎng)站設計說明書5. 使用ASP.NET MVC技術(shù)編寫的一個可以運行并且可靠的動態(tài)虛擬社區(qū)網(wǎng)站6. 畢業(yè)設計說明書7. 答辯用10分鐘PPT和1頁A4紙的畢業(yè)設計簡介進度計劃:序號畢業(yè)設計(論文)各階段內(nèi)容時間安排備 注1完成和UML、ASP.NET MV

5、、SQL Server相關(guān)的外文翻譯、文獻綜述第7學期第1217周2完成畢業(yè)設計開題報告第7學期第1217周3完成畢業(yè)設計中期自檢報告第7學期第18周4開發(fā)動態(tài)虛擬社區(qū)網(wǎng)站第7學期第12周-第8學期第12周5完成畢業(yè)設計說明書第8學期第13-14周6完成答辯用10分鐘PPT和1頁A4紙的畢業(yè)設計簡介第8學期第14周指導教師意見:張振庭同學為畢業(yè)設計的順利完成做了大量的準備工作:查閱文獻、配置開發(fā)環(huán)境、新技術(shù)學習和實驗,以及外文翻譯等。從所做的工作效果來看,具備了開題條件,同意開題。指導教師簽名: 2009年12月15日系部意見 審查結(jié)果: 同 意 不 同 意系主任簽名: 年 月 日二、閱讀文獻

6、目錄序號文獻名文獻出處文獻發(fā)表時間1Professional ASP.NET MVC 1.0MicrosoftWrox /Wiley Publishing2009年2SQL Server 2005數(shù)據(jù)庫開發(fā)詳解胡百敬 姚巧玫 等電子工業(yè)出版社2006年6月3ASP.NET 編程精彩百例明月創(chuàng)作室人民郵電出版社2003年1月4系統(tǒng)分析師UML實務手冊邱郁惠機械工業(yè)出版社2008年4月5構(gòu)建可擴展的Web站點Cal Henderson 徐寧電子工業(yè)出版社2008年9月6Ajax高級程序設計扎卡斯 姆克皮克 等人民郵電出版社2006年6月7ASP.NET與數(shù)據(jù)庫程序設計桂思強中國鐵道出版社2002年

7、8月8ASP.NET編程實作教程付磊北京希望電子出版社2002年6月9SQL Server 2005 基礎教程(英)迪尤遜 著,董明 等譯人民郵電出版社2006年12月10SQL Server 2005深入開發(fā)系列(美)科林 著,王馨 譯清華大學出版社2007年1月11UML用戶指南Grady Booch等2006年6月12面向?qū)ο蠹夹g(shù)UML教程王少鋒清華大學出版社2004年2月13高性能網(wǎng)站建設指南Steve Souders 著,劉彥博 譯電子工業(yè)出版社2008年7月14JavaScript權(quán)威指南David Flanagan著,張銘澤 譯機械工業(yè)出版社2003年1月151617181920

8、2122三、文獻綜述注意:學生閱讀文獻后,必須寫出3000字左右的綜述,作為開題內(nèi)容之一。(可增頁)為了做好這次的畢業(yè)設計,我查閱了大量相關(guān)的文獻資料,為之后即將要進行開發(fā)的動態(tài)虛擬社區(qū)網(wǎng)站做好了充分的準備。通過閱讀相關(guān)文獻讓我掌握了不少知識,對于如何去做這個畢業(yè)設計我現(xiàn)在也漸漸有了思路,以下為我所閱讀文獻的主要內(nèi)容:SQL Server 2005數(shù)據(jù)庫開發(fā)詳解:這是一本全面解析SQL Server 2005的原創(chuàng)精品書籍。這本書對數(shù)據(jù)庫管理、數(shù)據(jù)庫開發(fā)和商業(yè)智能等SQL Server 2005的新增特性都作了詳盡、系統(tǒng)的介紹。SQL Server 2005中包含了非常豐富的新特性:通過提供一

9、個更安全、可靠和高效的數(shù)據(jù)管理平臺,增強企業(yè)組織中用戶的管理能力,大幅提升IT管理效率并降低運維風險和成本;通過提供先進的商業(yè)智能平臺滿足眾多客戶對業(yè)務的實時統(tǒng)計分析、監(jiān)控預測等多種復雜管理需求,推動企業(yè)管理信息化建設和業(yè)務發(fā)展;同時,SQL Server 2005將提供一個極具擴展性和靈活性的開發(fā)平臺,不斷拓展應用空間,實現(xiàn)Internet數(shù)據(jù)業(yè)務互聯(lián)。SQL Server 2005將在安全性、高可靠性、性能、擴展性、可管理性方面有極大的提高,不僅能夠確保企業(yè)級數(shù)據(jù)業(yè)務的實時穩(wěn)定運行、還能夠大大提高管理效率、降低操作復雜度和運維成本。例如,SQL Server 2005將提供全新的安全認證、

10、數(shù)據(jù)加密技術(shù)來加強您數(shù)據(jù)系統(tǒng)的安全性;數(shù)據(jù)庫鏡像、快照、時點恢復、實時在線管理等諸多功能大大提高了企業(yè)級系統(tǒng)的可靠性、擴展性;而數(shù)據(jù)集成,各種自動化管理、調(diào)試和優(yōu)化工具則為您的IT管理工作帶來全新的體驗。在硬件方面,SQL Server 2005支持64位運算和海量數(shù)據(jù)存儲。ASP.NET 編程精彩百例:ASP.NET是微軟.NET戰(zhàn)略中的一個重要成員,除了可以使用Visual C#、VB.NET、Visual C+.NET、JScript.NET等語言編寫外,還可以使用第三方的.NET接口(如COBOL.NET、Perl.NET等)進行編寫。這本書將這100個實例分為4篇,即基本編程實例、中

11、級編程實例、高級編程實例與混合編程實例。在每個實例中,除了介紹ASP.NET中所提供的基礎知識點及編程技巧外,還介紹了ASP.NET在網(wǎng)絡編程、圖形編程、多媒體編程、Mobile(移動通信)等方面的重要應用及開發(fā)技術(shù)。ASP.net 是一種建立在通用語言上的程序構(gòu)架,能被用于一臺Web服務器來建立強大的Web應用程序。ASP.net提供許多比現(xiàn)在的Web開發(fā)模式強大的優(yōu)勢。執(zhí)行效率大幅提高。ASP.net是把基于通用語言的程序在服務器上運行。不像以前的ASP即時解釋程序,而是將程序在服務器端首次運行時進行編譯,這樣的執(zhí)行效果,當然比一條一條的解釋強很多。因為ASP.net是基于通用語言的編譯運

12、行的程序,所以它的強大性和適應性,可以使它運行在Web應用軟件開發(fā)者的幾乎全部的平臺上。通用語言的基本庫,消息機制,數(shù)據(jù)接口的處理都能無縫的整合到ASP.net的Web應用中。ASP.net同時也是language-independent語言獨立化的,所以,你可以選擇一種最適合你的語言來編寫你的程序,或者把你的程序用很多種語言來寫,現(xiàn)在已經(jīng)支持的有C#、VB,、Jscript。將來,這樣的多種程序語言協(xié)同工作的能力保護我們現(xiàn)在開發(fā)的程序,能夠完整的移植向ASP.net。Professional ASP.NET MVC 1.0:這本書用實例講述了與MVC模式,這是一個經(jīng)典的架構(gòu)模式,旨在進行業(yè)務

13、、表現(xiàn)、處理的分離。使各個模塊之間相互獨立,可以理解為互不相干的接口,實現(xiàn)了高內(nèi)聚低耦合,易與擴展和維護。就在Web Form大行其道時,微軟推出了ASP.NET MVC。嚴格說,ASP.NET MVC和Web Form是不具有可比性的,Web Form是一個完整的新型模型,從頂層到底層是一整套的東西,而ASP.NET MVC只是給Web Form穿了件MVC樣子的外套,它應該是基于Web Form的一種編程方式模型擴展。但是,從開發(fā)人員看,ASP.NET MVC的推出確實大大改變了我們的開發(fā)方式,很多Web Form下的方式不被提倡了,例如,曾飽受贊揚的服務器端控件再度被拋棄,轉(zhuǎn)而再次使用客

14、戶端控件,事件驅(qū)動模型被拋棄,轉(zhuǎn)而使用了類似傳統(tǒng)的URL跳轉(zhuǎn)處理模型。而且在數(shù)據(jù)驗證等方式上與Web Form下提倡的方式有了很大變化。ASP.NET MVC有很多優(yōu)點,如不再有ViewState,傳統(tǒng)的ASP.NET WebForm模式利用ViewState保存表單的狀態(tài)信息,由于B/S程序本身的限制,ViewState存儲數(shù)據(jù)需要在隱藏表單域里面放置很大一段字符串,這會大大增加頁面的字節(jié)數(shù),導致網(wǎng)頁加載變慢。又如,簡潔的HTML,最終生成的 HTML代碼完全由自己控制,不會生成任何“垃圾代碼”。更快的服務器端處理和客戶端呈現(xiàn),MVC只簡單地處理“模板”,而無需構(gòu)建復雜的控件樹,因此,無論是

15、在服務器處理的時間、和客戶端的呈現(xiàn)速度都會有所提高。為多種視圖只需一種模型,有時候一個頁面要顯示的數(shù)據(jù)是同一個,但表現(xiàn)形式有細微的差別,此時只需要修改視圖部分,可以采用現(xiàn)有的控制器行為。最后是單元測試,Web Form的測試是很困難的,使用MVC,可以將業(yè)務邏輯與頁面分離開,可以不在ASP.NET進程中執(zhí)行控制器,方便測試。系統(tǒng)分析師UML實務手冊:統(tǒng)一建模語言(UML, Unified Modeling Language)是一個通用的可視化建模語言,用于對軟件進行描述、可視化處理、構(gòu)造和建立軟件系統(tǒng)制品的文檔。它記錄了對必須構(gòu)造的系統(tǒng)的決定和理解,可用于對系統(tǒng)的理解、設計、瀏覽、配置、維護和

16、信息控制。UML適用于各種軟件開發(fā)方法、軟件生命周期的各個階段、各種應用領(lǐng)域以及各種開發(fā)工具,UML 是一種總結(jié)了以往建模技術(shù)的經(jīng)驗并吸收當今優(yōu)秀成果的標準建模方法。UML包括概念的語義、表示法和說明,提供了靜態(tài)、動態(tài)、系統(tǒng)環(huán)境及組織結(jié)構(gòu)的模型。它可被交互的可視化建模工具所支持,這些工具提供了代碼生成器和報表生成器。UML標準并沒有定義一種標準的開發(fā)過程,但它適用于迭代式的開發(fā)過程。它是為支持大部分現(xiàn)存的面向?qū)ο箝_發(fā)過程而設計的。UML描述了一個系統(tǒng)的靜態(tài)結(jié)構(gòu)和動態(tài)行為。UML將系統(tǒng)描述為一些離散的相互作用的對象并最終為外部用戶提供一定的功能的模型結(jié)構(gòu)。靜態(tài)結(jié)構(gòu)定義了系統(tǒng)中的重要對象的屬性和操

17、作以及這些對象之間的相互關(guān)系。動態(tài)行為定義了對象的時間特性和對象為完成目標而相互進行通信的機制。從不同但相互聯(lián)系的角度對系統(tǒng)建立的模型可用于不同的目的。UML還包括可將模型分解成包的結(jié)構(gòu)組件,以便于軟件小組將大的系統(tǒng)分解成易于處理的塊結(jié)構(gòu),并理解和控制各個包之間的依賴關(guān)系,在復雜的開發(fā)環(huán)境中管理模型單元。它還包括用于顯示系統(tǒng)實現(xiàn)和組織運行的組件。UML不是一門程序設計語言。但可以使用代碼生成器工具將UML模型轉(zhuǎn)換為多種程序設計語言代碼,或使用反向生成器工具將程序源代碼轉(zhuǎn)換為UML。UML不是一種可用于定理證明的高度形式化的語言,這樣的語言有很多種,但它們通用性較差,不易理解和使用。UML是一種

18、通用建模語言。對于一些專門領(lǐng)域,例如用戶圖形界面(GUI)設計、超大規(guī)模集成電路(VLSI)設計、基于規(guī)則的人工智能領(lǐng)域,使用專門的語言和工具可能會更適合些。UML是一種離散的建模語言,不適合對諸如工程和物理學領(lǐng)域中的連續(xù)系統(tǒng)建模。它是一個綜合的通用建模語言,適合對諸如由計算機軟件、固件或數(shù)字邏輯構(gòu)成的離散系統(tǒng)建模。Ajax高級程序設計:AJAX即“Asynchronous JavaScript and XML”(異步JavaScript和XML),AJAX并非縮寫詞,而是由Jesse James Gaiiett創(chuàng)造的名詞,是指一種創(chuàng)建交互式網(wǎng)頁應用的網(wǎng)頁開發(fā)技術(shù)。 國內(nèi)通常的讀音為“阿賈克斯

19、”和阿賈克斯足球隊讀音一樣。Web應用的交互如Flickr, Backpack和Google在這方面已經(jīng)有質(zhì)的飛躍。這個術(shù)語源自描述從基于網(wǎng)頁的Web應用到基于數(shù)據(jù)的應用的轉(zhuǎn)換。在基于數(shù)據(jù)的應用中,用戶需求的數(shù)據(jù)如聯(lián)系人列表,可以從獨立于實際網(wǎng)頁的服務端取得并且可以被動態(tài)地寫入網(wǎng)頁中,給緩慢的Web應用體驗著色使之像桌面應用一樣。 雖然大部分開發(fā)人員在過去使用過XMLHttp或者使用Iframe來加載數(shù)據(jù),但僅到現(xiàn)在我們才看到傳統(tǒng)的開發(fā)人員和公司開始采用這些技術(shù)。就像新的編程語言或模型伴隨著更多的痛苦,開發(fā)人員需要學習新的技巧及如何最好利用這些新技術(shù)。許多重要的技術(shù)和AJAX開發(fā)模式可以從現(xiàn)有

20、的知識中獲取。例如,在一個發(fā)送請求到服務端的應用中,必須包含請求順序、優(yōu)先級、超時響應、錯誤處理及回調(diào),其中許多元素已經(jīng)在Web服務中包含了,就像現(xiàn)在的SOA。AJAX開發(fā)人員擁有一個完整的系統(tǒng)架構(gòu)知識。同時,隨著技術(shù)的成熟還會有許多地方需要改進,特別是UI部分的易用性。AJAX開發(fā)與傳統(tǒng)的CS開發(fā)有很大的不同。這些不同引入了新的編程問題,最大的問題在于易用性。由于AJAX依賴瀏覽器的JavaScript和XML,瀏覽器的兼容性和支持的標準也變得和JavaScript的運行時性能一樣重要了。這些問題中的大部分來源于瀏覽器、服務器和技術(shù)的組合,因此必須理解如何才能最好的使用這些技術(shù)。綜合各種變化

21、的技術(shù)和強耦合的客戶服務端環(huán)境,AJAX提出了一種新的開發(fā)方式。AJAX開發(fā)人員必須理解傳統(tǒng)的MVC架構(gòu),這限制了應用層次之間的邊界。同時,開發(fā)人員還需要考慮CS環(huán)境的外部和使用AJAX技術(shù)來重定型MVC邊界。最重要的是,AJAX開發(fā)人員必須禁止以頁面集合的方式來考慮Web應用而需要將其認為是單個頁面。一旦UI設計與服務架構(gòu)之間的范圍被嚴格區(qū)分開來后,開發(fā)人員就需要更新和變化的技術(shù)集合了。AJAX的最大機遇在于用戶體驗。在使應用更快響應和創(chuàng)新的過程中,定義Web應用的規(guī)則正在被重寫,因此開發(fā)人員必須更注重用戶。現(xiàn)在用戶已經(jīng)逐漸習慣如何使用Web應用了。例如用戶通常希望每一次按鈕點擊會導致幾秒的

22、延遲和屏幕刷新,但AJAX正在打破這種長時間的狀況。因此用戶需要重新體驗按鈕點擊的響應了。可用性是AJAX令人激動的地方而且已經(jīng)產(chǎn)生了幾種新穎的技術(shù)。其中最引人注目的是一種稱為“黃色隱出”的技術(shù),他在數(shù)據(jù)更新之前時將用戶界面變?yōu)辄S色,更新完成后立刻恢復原來的顏色。AJAX開發(fā)人員將用戶從Web應用的負載中解放出來。小心地利用AJAX提供的豐富接口,不久桌面開發(fā)人員會發(fā)現(xiàn)AJAX是他們的方向。隨著AJAX迅速地引人注目起來,我想開發(fā)人員對這種技術(shù)的期待也迅速地增加。就像任何新技術(shù),AJAX的興旺也需要一整個開發(fā)工具/編程語言及相關(guān)技術(shù)系統(tǒng)來支撐。通過以上文獻的閱讀,讓我了解了在動態(tài)虛擬網(wǎng)站開發(fā)中

23、可能遇到的問題,以及如何適當運用各種技術(shù)來建設這樣一個網(wǎng)站的方法。我相信我一定能夠成功完成這次的畢業(yè)設計。四、文獻翻譯注意:每個學生必須提交15000個以上印刷符號、與課題研究密切相關(guān)的外文文獻的中文翻譯文章或者讀書報告。(可增頁)以下為Professional ASP.NET MVC 1.0第一章NerdDinner節(jié)選“ViewData和ViewModel”ViewData 和ViewModel現(xiàn)在我們將進一步擴展DinnersController,實現(xiàn)豐富表單編輯功能。這里我們討論2 種方法,用來將數(shù)據(jù)從Controller 傳遞到View:ViewData 和 ViewModel。從C

24、ontroller傳遞數(shù)據(jù)到View視圖模板MVC 模式一個典型的特征是嚴格的功能隔離。Model 模型、Controller 控制器和View 視圖各自定義了作用和職責,且相互之間以定義好的方式進行溝通。這有助于提升測試性和代碼重用。當Controller 決定呈現(xiàn)HTML 響應給客戶端是,它負責顯式傳遞給View 模板所有需要的數(shù)據(jù)。View 模板從不執(zhí)行任何數(shù)據(jù)查詢或應用程序邏輯 僅僅負責呈現(xiàn)Model 或Controller 傳遞過來的數(shù)據(jù)。目前,DinnersController 控制器傳遞給View 模板的Model 模型數(shù)據(jù)非常簡單和直接 Index() 方法是Dinner 對象

25、列表,Details()、Edit()、Create() 和Delete() 方法則是傳遞一個Dinner 對象。當增加更多UI 特性時,我們經(jīng)常需要傳遞更多數(shù)據(jù),在視圖模板中展示HTML 響應。例如,我們需要改變Edit 和Create視圖中Country 字段(從HTML 文本框到下拉列表框)。我們將生成一個動態(tài)的、支持的國家列表,而不是在視圖模板中硬編碼的下拉列表框。我們需要從Controller 同時傳遞Dinner 對象和支持的國家列表給View 模板。下面看看通過2 種方式來實現(xiàn)。使用ViewData 字典Controller 基類公開了一個ViewData 字典屬性,用來從Con

26、trollers 傳遞額外的數(shù)據(jù)給Views 視圖。例如,為了實現(xiàn)將Edit 視圖中Country 國家的文本框改為下拉列表框,我們更新Edit() Action 方法,傳入一個SelectList 對象(除了Dinner 對象外),該對象將作為Country 下拉列表框的Model 類。/ GET: /Dinners/Edit/5Authorizepublic ActionResult Edit(int id) Dinner dinner = dinnerRepository.GetDinner(id);ViewData"Countries" = new SelectLi

27、st(PhoneValidator.AllCountries, dinner.Country);return View(dinner);上述SelectList 構(gòu)造函數(shù)接收2 個參數(shù),第一個是國家列表,添加下拉列表,第二個是當前選擇的值。下面更新Edit.aspx 視圖模板,使用Html.DropDownList() 輔助方法代碼Html.TextBox() 輔助方法:<%= Html.DropDownList("Country", ViewData"Countries" as SelectList) %>上述Html.DropDownLi

28、st() 輔助方法接收2 個參數(shù),第一個是輸出的HTML 表單元素的名稱,第二個是通過ViewData 字典傳入的SelectList 模型類,必備那個使用C#的關(guān)鍵字as 轉(zhuǎn)換dictionary 為SelectList。現(xiàn)在我們在瀏覽器中訪問/Dinners/Edit/2,發(fā)現(xiàn)Edit 視圖模板中Country 國家文本框已經(jīng)更新為下拉列表框了。因為我們也會從HTTP POST Edit 方法中呈現(xiàn)Edit 視圖模板(當有錯誤時,否則會進入Details 視圖模板),因此我們也需要更新HTTP POST Edit 方法,在發(fā)生錯誤進入Edit 視圖模板時,添加SelectList 到Vie

29、wData中,代碼如下:/ POST: /Dinners/Edit/5AcceptVerbs(HttpVerbs.Post)public ActionResult Edit(int id, FormCollection collection) Dinner dinner = dinnerRepository.GetDinner(id);try UpdateModel(dinner);dinnerRepository.Save();return RedirectToAction("Details", new id=dinner.DinnerID );catch ModelSt

30、ate.AddModelErrors(dinner.GetRuleViolations();ViewData"countries" = new SelectList(PhoneValidator.AllCountries, dinner.Country);return View(dinner);現(xiàn)在DinnersController 控制器中Edit 方法完全支持下拉列表框了。使用ViewModel 模式ViewData 字典方法的優(yōu)點是非常快和容易實現(xiàn)。部分開發(fā)人員不喜歡使用基于字符串的字典(string-based dictionaries),因為一些輸入錯誤會導致錯誤

31、,但是不能在編譯期間發(fā)現(xiàn)。在使用View 視圖模板中使用強類型時,非強類型的ViewData 字典也需要使用as 操作符或類型轉(zhuǎn)換。另一個可選的方法是ViewModel 模式。當時有這一模式時,我們需要針對特定的View 創(chuàng)建強類型的類,公開View 模板需要的動態(tài)參數(shù)值或內(nèi)容。Controller 類接著填充和傳遞這些類給View 模板去使用。這樣可以實現(xiàn)類型安全、編譯期間檢查和編輯器智能提示等等。例如,針對Dinner 的Edit 視圖,我們創(chuàng)建一個DinnerFormViewModel 類,公開了2 個強類型的屬性:Dinner 對象和SelectList 模型類(用來填充國家下拉列表框

32、)。public class DinnerFormViewModel / Propertiespublic Dinner Dinner get; private set; public SelectList Countries get; private set; / Constructorpublic DinnerFormViewModel(Dinner dinner) Dinner = dinner;Countries = new SelectList(PhoneValidator.AllCountries, dinner.Country);接著,我們更新Edit() Action 方法,使

33、用從repository 檢索到的Dinner 對象創(chuàng)建DinnerFormViewModel對象,并傳遞給視圖模板:/ GET: /Dinners/Edit/5Authorizepublic ActionResult Edit(int id) Dinner dinner = dinnerRepository.GetDinner(id);return View(new DinnerFormViewModel(dinner);接下來,更新視圖模板,在Edit.aspx 頁面文件中,更改頂部的inherits 屬性,從Inherits="System.Web.Mvc.ViewPage&l

34、t;NerdDinner.Models.Dinner>更改為Inherits="System.Web.Mvc.ViewPage<NerdDinner.Controllers.DinnerFormViewModel>一旦完成上述操作后,View 模板中Model 屬性的智能提示將更新為傳入的DinnerFormViewModel 對象模型:下面我們需要更新視圖中的代碼。對于表單中的HTML 元素的名稱不需要更新,仍舊保持為Title、Country等等,我們需要更新HTML 輔助方法,使用DinnerFormViewModel 類來獲取屬性值。<p><

35、;label for="Title">Dinner Title:</label><%= Html.TextBox("Title", Model.Dinner.Title) %><%=Html.ValidationMessage("Title", "*") %></p><p><label for="Country">Country:</label><%= Html.DropDownList("

36、Country", Model.Countries) %><%=Html.ValidationMessage("Country", "*") %></p>同樣地,我們也需要更新Edit Post 方法,在產(chǎn)生錯誤時,使用DinnerFormViewModel 類傳遞給視圖模板:/ POST: /Dinners/Edit/5AcceptVerbs(HttpVerbs.Post)public ActionResult Edit(int id, FormCollection collection) Dinner dinn

37、er = dinnerRepository.GetDinner(id);try UpdateModel(dinner);dinnerRepository.Save();return RedirectToAction("Details", new id=dinner.DinnerID );catch ModelState.AddModelErrors(dinner.GetRuleViolations();return View(new DinnerFormViewModel(dinner);我們也更新Create() Action 方法,重用相同的DinnerFormView

38、Model 類,在View 中實現(xiàn)Country 下拉列表框。下面是HTTP-GET 的實現(xiàn)代碼:/ GET: /Dinners/Createpublic ActionResult Create() Dinner dinner = new Dinner() EventDate = DateTime.Now.AddDays(7);return View(new DinnerFormViewModel(dinner);下面是HTTP-POST Create 方法的實現(xiàn)代碼:/ POST: /Dinners/CreateAcceptVerbs(HttpVerbs.Post)public Action

39、Result Create(Dinner dinner) if (ModelState.IsValid) try dinner.HostedBy = "SomeUser"dinnerRepository.Add(dinner);dinnerRepository.Save();return RedirectToAction("Details", new id=dinner.DinnerID );catch ModelState.AddModelErrors(dinner.GetRuleViolations();return View(new DinnerF

40、ormViewModel(dinner);現(xiàn)在Edit 和Create 視圖都支持通過下列列表框來選擇國家了。定制ViewModel 類(Custom-shaped ViewModel Classes)在上面的實現(xiàn)方案中,DinnerFormViewModel 類直接公開了2 個公有屬性:Dinner 模型對象和SelectList模型屬性。這一方法適合于View 模板中HTML 用戶界面元素和業(yè)務Model 對象比較接近的場景。如果不符合這一情況,可以考慮創(chuàng)建定制的ViewModel 類,根據(jù)視圖的使用情況創(chuàng)建優(yōu)化的對象模型,該對象模型可能完全不同于底層的業(yè)務模型對象(Domain Mode

41、l Object)。例如,該ViewModel 類有可能公開不同的屬性或者從多個Model 對象中匯總的屬性。定制的ViewModel 類不僅可用來從Controller 傳遞數(shù)據(jù)到View 去呈現(xiàn),而且可用來處理從表單提交回來給Controller 的action 方法的數(shù)據(jù)。針對后一種情況,你可以讓Action 方法根據(jù)表單提交回來的數(shù)據(jù)更新ViewModel 對象,接著使用ViewModel 實例來映射或者獲取時間的業(yè)務模型對象(Domain ModelObject)。定制ViewModel 類提供了很好的靈活性,在任何時候,你發(fā)現(xiàn)View 模板中的呈現(xiàn)代碼或Action 方法中表單提交

42、代碼越來越開始復雜時,你可以考慮使用定制的ViewModel 了。通常,這意味著業(yè)務模型對象和View 視圖中的用戶界面元素不一致,一個中介的定制ViewModel 類就可以發(fā)揮作用了。以下節(jié)選自Scott Guthrie的博客中 ASP.NET MVC Design Gallery and Upcoming View Improvements with the ASP.NET MVC Release Candidate一文:ASP.NET MVC設計陳列室和即將推出的ASP.NET MVC RC版本中的視圖方面的改進今天我們在網(wǎng)站上推出了一個新的ASP.NET MVC 設計陳列室。這個設計陳

43、列室里陳列了你可以下載和輕易使用在你的ASP.NET MVC應用中的免費HTML設計模板。每個設計模板中包括了一個Site.master文件,一個CSS樣式表文件,也許還有一套圖片,用戶控件,以及支持它們的輔助方法等。  陳列室允許你在線預覽每個設計,以及下載一個你可以解出和集成進你的網(wǎng)站的模板.zip版本。該陳列室允許任何人在創(chuàng)作共用許可(creative commons license)下創(chuàng)建和提交新的設計。訪客可以對它們進行投票,提供反饋。最受歡迎的設計會在陳列室的頂部顯示。 我們認為這會給開發(fā)人員提供一個很有用的方式來更輕松地創(chuàng)建有吸引力的,與標準兼容的網(wǎng)站。希望還能鼓勵大家

44、創(chuàng)建和共享可輕易為他人重用的設計。 即將推出的最終版候選版本中的View方面的改進說到UI這個話題,我想我也應該與大家分享即將推出的ASP.NET MVC最終版候選版本(Release Candidate,簡稱RC)中的一些與視圖有關(guān)的改進的細節(jié)。除了缺陷修補外,RC版本還融合了若干個特定于視圖的新功能和來自社區(qū)的建議。 不需要后臺代碼文件的視圖基于許多人的反饋,我們決定做一個變動,這樣MVC視圖文件在默認情形下不再擁有后臺代碼文件。這個變動有助于強化視圖在MVC世界中的目的(視圖意在純粹的顯示,不該包含任何與顯示無關(guān)的代碼),去掉項目中沒被使用的文件(對大多數(shù)人來說): 在ASP.NET M

45、VC Beta版本中,開發(fā)人員可以通過在視圖中的Inherits(繼承)屬性上使用泛型的CLR句法來除去后臺代碼文件,但這個CLR句法,說得輕一點的話,非常難以發(fā)現(xiàn)而且非常難用。ASP.NET MVC開發(fā)團隊結(jié)合了ASP.NET中現(xiàn)有的幾個擴展性功能,將在ASP.NET RC版本中,在Inherits屬性中提供一個標準VB/C#語言句法: 不使用后臺代碼文件的另一個好處是,在你將視圖文件加到項目中時,你會馬上得到intellisense。在Beta版本中,你需要在創(chuàng)建視圖后做一次編譯才能在其中得到代碼intellisense。RC版本將使得添加和立刻編輯視圖的流程免去了編譯之累,變得更加緊湊。

46、 視圖的頂級Model屬性在ASP.NET MVC的早期版本中,你使用ViewData.Model屬性來訪問傳給視圖的強類型的模型對象: 上面的句法還是可用的,雖然現(xiàn)在ViewPage上還有一個頂級的Model屬性可為你所用: 這個屬性的作用跟先前的代碼例子是一樣的,它主要的好處在于它允許你編寫的代碼更加簡明。 HTML/AJAX輔助對象現(xiàn)在允許表達式句法有一個不少人都提出的要求是,在使用視圖的HTML和AJAX輔助對象時,在指稱Model時使用強類型表達式的句法(而不是字符串)的能力。 在ASP.NET MVC Beta版本中,這是不可能的,因為HtmlHelper和AjaxHelper輔助

47、類并沒有在它們的簽名中呈示模型的類型,所以大家需要建造直接基于ViewPage<TModel>基類的輔助方法才能達成這個目的。ASP.NET MVC RC 版本引進了新的HtmlHelper<TModel>和 AjaxHelper<TModel> 類型,是在ViewPage<TModel> 基類上呈示的。這些類型現(xiàn)在允許任何人建造使用了表達式句法的強類型HTML和AJAX輔助擴展來指稱View的模型。 例如,我可以使用下面的代碼建造一個(非常簡單的)強類型TextBox輔助方法: 然后可以這樣,在我的任意一個視圖中,用它來綁定一個Product模

48、型對象: Visual Studio將在源代碼編輯器中操作View的模型時,以這種方式對強類型的表達式句法提供完整的intellisense:  注:核心ASP.NET MVC V1程序集中的HTML輔助擴展還將使用現(xiàn)有的句法(不是基于表達式的),我們正計劃在MVCFutures程序集中加入基于表達式的版本。當然,你還可以使用字符串或者強類型的表達式,來添加你自己的輔助方法。所有這些內(nèi)置的輔助方法都是可以去掉的(因為他們是擴展方法),如果你要用自己的版本來替換或覆蓋它們的話。 Scaffolding支持ASP.NET MVC RC版本還包括了在Visual Studio中使用新的AS

49、P.NET MVC "Add View"命令創(chuàng)建視圖時的自動的"UI scaffolding" 支持。這個scaffolding支持將允許針對任何.NET 類型或?qū)ο蟮淖詣拥囊晥D生成,意味著它對POCO類,LINQ to SQL, LINQ to Entities, NHibernate, SubSonic, LLBLGen Pro,或者任何其他對象模型都工作。Scaffolding引擎使用了反射來獲取View的模型類型的公開接口,然后將它們傳給scaffolding模板,在生成的視圖中填充基于它的合適HTML標識。 例如,假定我們有一個Products

50、Controller類,想創(chuàng)建一個它的"Edit" action,來顯示特定產(chǎn)品的編輯視圖。使用RC版本,我們可以象這樣,在我們的"Edit" action方法中右擊,選擇"Add View"上下文菜單命令: 然后在"Add View" 對話框中,我們可以表示我們將把Product類型傳給我們的View: 我們可以表示我們要創(chuàng)建一個"Empty" 視圖模板(象上面那樣),或者表示我們要VS針對我們提供的Product對象自動提供一個"Edit"表單視圖的基本架子: 如果我們選

51、擇"Edit" 模板, VS會自動為我們生成一個文件,該文件含有合適的HTML和驗證輔助方法來生成一個可編輯的表單視圖: 然后我們可以運行應用,馬上得到一個編輯界面:然后我們可以進去,將生成的edit.aspx文件做任意改動。我們發(fā)布的scaffolding系統(tǒng)的一個非常棒的東西是,它是使用Visual Studio的內(nèi)置T4代碼生成系統(tǒng)實現(xiàn)的(Scott Hanselman在這里有一篇非常好的相關(guān)博客)。隨ASP.NET MVC發(fā)布的"List(列表)", "Edit(編輯)", "Create(創(chuàng)建)" and

52、 "Details(細節(jié))" 模板可以做完全定制,或者用你自己的T4模板做替換(或者從ASP.NET MVC設計陳列室下載)。所以,如果你自己有特別的方式生成HTML的話,或者想要使用自定義的HTML輔助類(譬如,基于強類型表達式的輔助類),那你可以更新默認的模板,然后scaffolding系統(tǒng)之后就會使用它們。 我們計劃允許模板可以在整個機器的層次,以及每個項目的層次上被置換(這樣,你可以在源碼控制中簽入特定于應用的scaffolding模板,在團隊成員間共享)。 編輯視圖的MSBuild任務在默認情形下,當你編譯ASP.NET MVC項目時,它會編譯項目中除了視圖文件中

53、代碼以外的所有代碼。在ASP.NET MVC Beta中,你想要編譯視圖的話,你需要編寫你自己的 MSBuild任務。ASP.NET MVC RC版本現(xiàn)在包含了一個內(nèi)置的 MSBuild 任務,你可以用它來將視圖包括成為項目編譯過程的一部分。它會核實應用中所有視圖和母版頁的句法和行內(nèi)代碼,如果遇到問題的話,它會給你編譯錯誤信息。 但因為性能的緣故,我們不建議在開發(fā)期間運行它來做快速編譯,但將它加到特定的編譯配置(例如,staging和部署)或者在與 Build 或 CI (連續(xù)集成)服務器一起使用時是非常方便的。 即將推出的ASP.NET MVC RC版本的其他一些功能上面是RC版本中一些特定

54、于視圖的功能的簡短列表。 在RC版本中,還有許多其他的功能和要求,這些包括:IDataErrorInfo支持,允許模型匯報驗證錯誤信息,以及更豐富的錯誤驗證擴展性以允許你使用自己的方式來匯報模型驗證信息到ModelBinders中(IDataErrorInfo支持是建造在這個的基礎之上的);新的FileResult和JavaScriptResult的ActionResult 類型(允許你更輕松地下載文件和可執(zhí)行的JavaScript到瀏覽器中);內(nèi)置的 jQuery -vsdoc intellisense支持;重構(gòu)了的AccountController支持,以促成更簡單的表單登錄場景的單元測試

55、和擴展性;各種各樣的項目模板改進,隨處可見的眾多擴展性;諸多的缺陷修補;以及若干個在RC出來后我將在博客中討論的其他很酷的特性等。 我們將在一月份發(fā)布ASP.NET MVC的RC版本。我們的計劃是,該版本將是ASP.NET MVC V1 API和功能完備,含有0個已知的缺陷。我們將給大家一個簡短的時間更新到該版本,好好試用一下,報告任何緊要問題,在那之后不久,我們就將發(fā)布正式的V1版本(所以,離現(xiàn)在也不太遠了)。 以下節(jié)選自Scott Guthrie的博客中 Visual Studio 2008 and .NET Framework 3.5 Service Pack 1 Beta一文:Visu

56、al Studio 2008 和 .NET Framework 3.5 Service Pack 1 Beta今天早些時候,我們發(fā)布了.NET 3.5 SP1 和 VS 2008 SP1的公開beta版,這些服務更新提供了自11月份我們發(fā)布這些產(chǎn)品之后所報告的問題的缺陷修補以及性能改進的累積結(jié)果,內(nèi)中還包含了若干新功能和功能增強,勢將進一步完善.NET應用的建造(其中的一些細節(jié)請見下文)。 我們計劃在今夏,作為免費更新,同時發(fā)布.NET 3.5 SP1 和 VS 2008 SP1的最終版本,你可以在這里下載和安裝這些beta版。 SP1 Beta安裝重要注意事項今天發(fā)布的SP1 beta版還處

57、于beta狀態(tài),所以你在重要的機器上安裝時千萬要慎重,下面是幾個你需要知道的非常重要的SP1 Beta安裝注意事項: 1) 如果你目前正運行Windows Vista的話,你應該確定在嘗試安裝 .NET 3.5 SP1 Beta之前安裝了Vista SP1。如果運行 Vista RTM版本的話,安裝.NET 3.5 SP1會有一些問題,這些問題將會在.NET 3.5 SP1的最終版中得到解決。到那之前,請確定在安裝.NET 3.5 SP1 beta之前安裝Vista SP1。 2) 如果你在你的機器上安裝了VS 2008 Tools for Silverlight 2 Beta1安裝包,你必須在安裝VS 2008 SP1 Beta之前先卸載它,同時還必須卸載VS 2008的KB949325更新否則你的安裝會失敗。你可以在這里找到可以遵循的確切步驟的更多細節(jié)(注:你必須分開卸載這兩樣東西)。 在你機器上同時擁有Silverlight 2 運行時和.NET 3.5 SP1是沒問題的,需要卸載的組件是VS 2008 Tools for

溫馨提示

  • 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

提交評論