本科毕业设计基于ASP.NET MVC的动态虚拟社区开题报告_第1页
本科毕业设计基于ASP.NET MVC的动态虚拟社区开题报告_第2页
本科毕业设计基于ASP.NET MVC的动态虚拟社区开题报告_第3页
本科毕业设计基于ASP.NET MVC的动态虚拟社区开题报告_第4页
本科毕业设计基于ASP.NET MVC的动态虚拟社区开题报告_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本科毕业设计(论文)开题报告 系 别 信息技术系 专 业 计算机科学与技术 交稿日期 教务处制一、开题报告毕业设计(论文)题目基于ASP.NET MVC的动态虚拟社区课题背景和意义:互联网在近几年中发展的速度可谓相当迅猛,而互联网的便利性也是显而易见的,其应用范围相当广泛。人们现在可以不用出门就获悉发生在全国乃至整个世界的新闻。不仅仅是新闻这一方面,当今社会人们在网络上的社交活动也同样是越来越多。以前人们使用计算机来联系也许只是发送一些消息、几封E-mail而已,不过现在有了更多的选择。随着计算机硬件制造技术的不断提高,处理、计算能力的不断强化,再配合互联网,使得网上虚拟社区的建立成为可能。建

2、立动态虚拟社区,提供给用户一个平台,让不同用户之间能够交流,分享生活信息,共同娱乐,还能得到属于自己的一个主页(也就是博客),让用户能够充分发挥自己的创造力。在虚拟的社区中展现自己,为自己的生活增添光彩、增添乐趣。本动态虚拟社区网站主要使用ASP.NET MVC这个最新最前沿的技术进行开发。MVC(Model-View-Controller)用于表示一种软件架构模式。它把软件系统分为三个基本部分:模型(Model),视图(View)和控制器(Controller)。 这种模式具有以下一系列优点:1. 通过把项目分成Model、View和Controller,各个模块之间内聚程度得到了提高,减少

3、了耦合,对于复杂项目来说更加容易维护。2. 没有使用View State和服务器表单控件,可以更方便的控制应用程序的行为.3. 应用程序通过Controller来控制程序请求,可以提供丰富的URL重写。4. 对单元测试的支持更加出色。5. 在团队开发模式下表现更出众。研究的主要内容:将使用ASP.NET MVC技术、SQL Server 2008和UModel 2009等软件完成一个虚拟社区网站的建设。虚拟社区网站提供给用户一个交流展示,获取信息的平台。用户能够在网站中注册自己的账号,建立博客,分享信息,一起玩游戏等。虚拟社区有俱乐部功能,形式和论坛相似。系统要求具备良好的人机交互界面,要进行

4、严格的测试以保证系统的可靠性,具备可扩展性和可维护性。研究方法(或技术路线):使用UML语言来对网站的整体功能进行建模。选择ASP.NET MVC进行网站页面及主体程序代码的编写,后台数据库由SQL Server 2008支持。预期结果:1. 毕业设计开题报告2. 有关的外文翻译和文献综述3. 毕业设计中期自检报告4. 包含UML模型的分析和网站设计说明书5. 使用ASP.NET MVC技术编写的一个可以运行并且可靠的动态虚拟社区网站6. 毕业设计说明书7. 答辩用10分钟PPT和1页A4纸的毕业设计简介进度计划:序号毕业设计(论文)各阶段内容时间安排备 注1完成和UML、ASP.NET MV

5、、SQL Server相关的外文翻译、文献综述第7学期第1217周2完成毕业设计开题报告第7学期第1217周3完成毕业设计中期自检报告第7学期第18周4开发动态虚拟社区网站第7学期第12周-第8学期第12周5完成毕业设计说明书第8学期第13-14周6完成答辩用10分钟PPT和1页A4纸的毕业设计简介第8学期第14周指导教师意见:张振庭同学为毕业设计的顺利完成做了大量的准备工作:查阅文献、配置开发环境、新技术学习和实验,以及外文翻译等。从所做的工作效果来看,具备了开题条件,同意开题。指导教师签名: 2009年12月15日系部意见 审查结果: 同 意 不 同 意系主任签名: 年 月 日二、阅读文献

6、目录序号文献名文献出处文献发表时间1Professional ASP.NET MVC 1.0MicrosoftWrox /Wiley Publishing2009年2SQL Server 2005数据库开发详解胡百敬 姚巧玫 等电子工业出版社2006年6月3ASP.NET 编程精彩百例明月创作室人民邮电出版社2003年1月4系统分析师UML实务手册邱郁惠机械工业出版社2008年4月5构建可扩展的Web站点Cal Henderson 徐宁电子工业出版社2008年9月6Ajax高级程序设计扎卡斯 姆克皮克 等人民邮电出版社2006年6月7ASP.NET与数据库程序设计桂思强中国铁道出版社2002年

7、8月8ASP.NET编程实作教程付磊北京希望电子出版社2002年6月9SQL Server 2005 基础教程(英)迪尤逊 著,董明 等译人民邮电出版社2006年12月10SQL Server 2005深入开发系列(美)科林 著,王馨 译清华大学出版社2007年1月11UML用户指南Grady Booch等2006年6月12面向对象技术UML教程王少锋清华大学出版社2004年2月13高性能网站建设指南Steve Souders 著,刘彦博 译电子工业出版社2008年7月14JavaScript权威指南David Flanagan著,张铭泽 译机械工业出版社2003年1月151617181920

8、2122三、文献综述注意:学生阅读文献后,必须写出3000字左右的综述,作为开题内容之一。(可增页)为了做好这次的毕业设计,我查阅了大量相关的文献资料,为之后即将要进行开发的动态虚拟社区网站做好了充分的准备。通过阅读相关文献让我掌握了不少知识,对于如何去做这个毕业设计我现在也渐渐有了思路,以下为我所阅读文献的主要内容:SQL Server 2005数据库开发详解:这是一本全面解析SQL Server 2005的原创精品书籍。这本书对数据库管理、数据库开发和商业智能等SQL Server 2005的新增特性都作了详尽、系统的介绍。SQL Server 2005中包含了非常丰富的新特性:通过提供一

9、个更安全、可靠和高效的数据管理平台,增强企业组织中用户的管理能力,大幅提升IT管理效率并降低运维风险和成本;通过提供先进的商业智能平台满足众多客户对业务的实时统计分析、监控预测等多种复杂管理需求,推动企业管理信息化建设和业务发展;同时,SQL Server 2005将提供一个极具扩展性和灵活性的开发平台,不断拓展应用空间,实现Internet数据业务互联。SQL Server 2005将在安全性、高可靠性、性能、扩展性、可管理性方面有极大的提高,不仅能够确保企业级数据业务的实时稳定运行、还能够大大提高管理效率、降低操作复杂度和运维成本。例如,SQL Server 2005将提供全新的安全认证、

10、数据加密技术来加强您数据系统的安全性;数据库镜像、快照、时点恢复、实时在线管理等诸多功能大大提高了企业级系统的可靠性、扩展性;而数据集成,各种自动化管理、调试和优化工具则为您的IT管理工作带来全新的体验。在硬件方面,SQL Server 2005支持64位运算和海量数据存储。ASP.NET 编程精彩百例:ASP.NET是微软.NET战略中的一个重要成员,除了可以使用Visual C#、VB.NET、Visual C+.NET、JScript.NET等语言编写外,还可以使用第三方的.NET接口(如COBOL.NET、Perl.NET等)进行编写。这本书将这100个实例分为4篇,即基本编程实例、中

11、级编程实例、高级编程实例与混合编程实例。在每个实例中,除了介绍ASP.NET中所提供的基础知识点及编程技巧外,还介绍了ASP.NET在网络编程、图形编程、多媒体编程、Mobile(移动通信)等方面的重要应用及开发技术。ASP.net 是一种建立在通用语言上的程序构架,能被用于一台Web服务器来建立强大的Web应用程序。ASP.net提供许多比现在的Web开发模式强大的优势。执行效率大幅提高。ASP.net是把基于通用语言的程序在服务器上运行。不像以前的ASP即时解释程序,而是将程序在服务器端首次运行时进行编译,这样的执行效果,当然比一条一条的解释强很多。因为ASP.net是基于通用语言的编译运

12、行的程序,所以它的强大性和适应性,可以使它运行在Web应用软件开发者的几乎全部的平台上。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.net的Web应用中。ASP.net同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#、VB,、Jscript。将来,这样的多种程序语言协同工作的能力保护我们现在开发的程序,能够完整的移植向ASP.net。Professional ASP.NET MVC 1.0:这本书用实例讲述了与MVC模式,这是一个经典的架构模式,旨在进行业务

13、、表现、处理的分离。使各个模块之间相互独立,可以理解为互不相干的接口,实现了高内聚低耦合,易与扩展和维护。就在Web Form大行其道时,微软推出了ASP.NET MVC。严格说,ASP.NET MVC和Web Form是不具有可比性的,Web Form是一个完整的新型模型,从顶层到底层是一整套的东西,而ASP.NET MVC只是给Web Form穿了件MVC样子的外套,它应该是基于Web Form的一种编程方式模型扩展。但是,从开发人员看,ASP.NET MVC的推出确实大大改变了我们的开发方式,很多Web Form下的方式不被提倡了,例如,曾饱受赞扬的服务器端控件再度被抛弃,转而再次使用客

14、户端控件,事件驱动模型被抛弃,转而使用了类似传统的URL跳转处理模型。而且在数据验证等方式上与Web Form下提倡的方式有了很大变化。ASP.NET MVC有很多优点,如不再有ViewState,传统的ASP.NET WebForm模式利用ViewState保存表单的状态信息,由于B/S程序本身的限制,ViewState存储数据需要在隐藏表单域里面放置很大一段字符串,这会大大增加页面的字节数,导致网页加载变慢。又如,简洁的HTML,最终生成的 HTML代码完全由自己控制,不会生成任何“垃圾代码”。更快的服务器端处理和客户端呈现,MVC只简单地处理“模板”,而无需构建复杂的控件树,因此,无论是

15、在服务器处理的时间、和客户端的呈现速度都会有所提高。为多种视图只需一种模型,有时候一个页面要显示的数据是同一个,但表现形式有细微的差别,此时只需要修改视图部分,可以采用现有的控制器行为。最后是单元测试,Web Form的测试是很困难的,使用MVC,可以将业务逻辑与页面分离开,可以不在ASP.NET进程中执行控制器,方便测试。系统分析师UML实务手册:统一建模语言(UML, Unified Modeling Language)是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可用于对系统的理解、设计、浏览、配置、维护和

16、信息控制。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,UML 是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。UML包括概念的语义、表示法和说明,提供了静态、动态、系统环境及组织结构的模型。它可被交互的可视化建模工具所支持,这些工具提供了代码生成器和报表生成器。UML标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过程。它是为支持大部分现存的面向对象开发过程而设计的。UML描述了一个系统的静态结构和动态行为。UML将系统描述为一些离散的相互作用的对象并最终为外部用户提供一定的功能的模型结构。静态结构定义了系统中的重要对象的属性和操

17、作以及这些对象之间的相互关系。动态行为定义了对象的时间特性和对象为完成目标而相互进行通信的机制。从不同但相互联系的角度对系统建立的模型可用于不同的目的。UML还包括可将模型分解成包的结构组件,以便于软件小组将大的系统分解成易于处理的块结构,并理解和控制各个包之间的依赖关系,在复杂的开发环境中管理模型单元。它还包括用于显示系统实现和组织运行的组件。UML不是一门程序设计语言。但可以使用代码生成器工具将UML模型转换为多种程序设计语言代码,或使用反向生成器工具将程序源代码转换为UML。UML不是一种可用于定理证明的高度形式化的语言,这样的语言有很多种,但它们通用性较差,不易理解和使用。UML是一种

18、通用建模语言。对于一些专门领域,例如用户图形界面(GUI)设计、超大规模集成电路(VLSI)设计、基于规则的人工智能领域,使用专门的语言和工具可能会更适合些。UML是一种离散的建模语言,不适合对诸如工程和物理学领域中的连续系统建模。它是一个综合的通用建模语言,适合对诸如由计算机软件、固件或数字逻辑构成的离散系统建模。Ajax高级程序设计:AJAX即“Asynchronous JavaScript and XML”(异步JavaScript和XML),AJAX并非缩写词,而是由Jesse James Gaiiett创造的名词,是指一种创建交互式网页应用的网页开发技术。 国内通常的读音为“阿贾克斯

19、”和阿贾克斯足球队读音一样。Web应用的交互如Flickr, Backpack和Google在这方面已经有质的飞跃。这个术语源自描述从基于网页的Web应用到基于数据的应用的转换。在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的Web应用体验着色使之像桌面应用一样。 虽然大部分开发人员在过去使用过XMLHttp或者使用Iframe来加载数据,但仅到现在我们才看到传统的开发人员和公司开始采用这些技术。就像新的编程语言或模型伴随着更多的痛苦,开发人员需要学习新的技巧及如何最好利用这些新技术。许多重要的技术和AJAX开发模式可以从现有

20、的知识中获取。例如,在一个发送请求到服务端的应用中,必须包含请求顺序、优先级、超时响应、错误处理及回调,其中许多元素已经在Web服务中包含了,就像现在的SOA。AJAX开发人员拥有一个完整的系统架构知识。同时,随着技术的成熟还会有许多地方需要改进,特别是UI部分的易用性。AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的编程问题,最大的问题在于易用性。由于AJAX依赖浏览器的JavaScript和XML,浏览器的兼容性和支持的标准也变得和JavaScript的运行时性能一样重要了。这些问题中的大部分来源于浏览器、服务器和技术的组合,因此必须理解如何才能最好的使用这些技术。综合各种变化

21、的技术和强耦合的客户服务端环境,AJAX提出了一种新的开发方式。AJAX开发人员必须理解传统的MVC架构,这限制了应用层次之间的边界。同时,开发人员还需要考虑CS环境的外部和使用AJAX技术来重定型MVC边界。最重要的是,AJAX开发人员必须禁止以页面集合的方式来考虑Web应用而需要将其认为是单个页面。一旦UI设计与服务架构之间的范围被严格区分开来后,开发人员就需要更新和变化的技术集合了。AJAX的最大机遇在于用户体验。在使应用更快响应和创新的过程中,定义Web应用的规则正在被重写,因此开发人员必须更注重用户。现在用户已经逐渐习惯如何使用Web应用了。例如用户通常希望每一次按钮点击会导致几秒的

22、延迟和屏幕刷新,但AJAX正在打破这种长时间的状况。因此用户需要重新体验按钮点击的响应了。可用性是AJAX令人激动的地方而且已经产生了几种新颖的技术。其中最引人注目的是一种称为“黄色隐出”的技术,他在数据更新之前时将用户界面变为黄色,更新完成后立刻恢复原来的颜色。AJAX开发人员将用户从Web应用的负载中解放出来。小心地利用AJAX提供的丰富接口,不久桌面开发人员会发现AJAX是他们的方向。随着AJAX迅速地引人注目起来,我想开发人员对这种技术的期待也迅速地增加。就像任何新技术,AJAX的兴旺也需要一整个开发工具/编程语言及相关技术系统来支撑。通过以上文献的阅读,让我了解了在动态虚拟网站开发中

23、可能遇到的问题,以及如何适当运用各种技术来建设这样一个网站的方法。我相信我一定能够成功完成这次的毕业设计。四、文献翻译注意:每个学生必须提交15000个以上印刷符号、与课题研究密切相关的外文文献的中文翻译文章或者读书报告。(可增页)以下为Professional ASP.NET MVC 1.0第一章NerdDinner节选“ViewData和ViewModel”ViewData 和ViewModel现在我们将进一步扩展DinnersController,实现丰富表单编辑功能。这里我们讨论2 种方法,用来将数据从Controller 传递到View:ViewData 和 ViewModel。从C

24、ontroller传递数据到View视图模板MVC 模式一个典型的特征是严格的功能隔离。Model 模型、Controller 控制器和View 视图各自定义了作用和职责,且相互之间以定义好的方式进行沟通。这有助于提升测试性和代码重用。当Controller 决定呈现HTML 响应给客户端是,它负责显式传递给View 模板所有需要的数据。View 模板从不执行任何数据查询或应用程序逻辑 仅仅负责呈现Model 或Controller 传递过来的数据。目前,DinnersController 控制器传递给View 模板的Model 模型数据非常简单和直接 Index() 方法是Dinner 对象

25、列表,Details()、Edit()、Create() 和Delete() 方法则是传递一个Dinner 对象。当增加更多UI 特性时,我们经常需要传递更多数据,在视图模板中展示HTML 响应。例如,我们需要改变Edit 和Create视图中Country 字段(从HTML 文本框到下拉列表框)。我们将生成一个动态的、支持的国家列表,而不是在视图模板中硬编码的下拉列表框。我们需要从Controller 同时传递Dinner 对象和支持的国家列表给View 模板。下面看看通过2 种方式来实现。使用ViewData 字典Controller 基类公开了一个ViewData 字典属性,用来从Con

26、trollers 传递额外的数据给Views 视图。例如,为了实现将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 构造函数接收2 个参数,第一个是国家列表,添加下拉列表,第二个是当前选择的值。下面更新Edit.aspx 视图模板,使用Html.DropDownList() 辅助方法代码Html.TextBox() 辅助方法:<%= Html.DropDownList("Country", ViewData"Countries" as SelectList) %>上述Html.DropDownLi

28、st() 辅助方法接收2 个参数,第一个是输出的HTML 表单元素的名称,第二个是通过ViewData 字典传入的SelectList 模型类,必备那个使用C#的关键字as 转换dictionary 为SelectList。现在我们在浏览器中访问/Dinners/Edit/2,发现Edit 视图模板中Country 国家文本框已经更新为下拉列表框了。因为我们也会从HTTP POST Edit 方法中呈现Edit 视图模板(当有错误时,否则会进入Details 视图模板),因此我们也需要更新HTTP POST Edit 方法,在发生错误进入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);现在DinnersController 控制器中Edit 方法完全支持下拉列表框了。使用ViewModel 模式ViewData 字典方法的优点是非常快和容易实现。部分开发人员不喜欢使用基于字符串的字典(string-based dictionaries),因为一些输入错误会导致错误

31、,但是不能在编译期间发现。在使用View 视图模板中使用强类型时,非强类型的ViewData 字典也需要使用as 操作符或类型转换。另一个可选的方法是ViewModel 模式。当时有这一模式时,我们需要针对特定的View 创建强类型的类,公开View 模板需要的动态参数值或内容。Controller 类接着填充和传递这些类给View 模板去使用。这样可以实现类型安全、编译期间检查和编辑器智能提示等等。例如,针对Dinner 的Edit 视图,我们创建一个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 对象创建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 方法,在产生错误时,使用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 中实现Country 下拉列表框。下面是HTTP-GET 的实现代码:/ GET: /Dinners/Createpublic ActionResult Create() Dinner dinner = new Dinner() EventDate = DateTime.Now.AddDays(7);return View(new DinnerFormViewModel(dinner);下面是HTTP-POST Create 方法的实现代码:/ 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);现在Edit 和Create 视图都支持通过下列列表框来选择国家了。定制ViewModel 类(Custom-shaped ViewModel Classes)在上面的实现方案中,DinnerFormViewModel 类直接公开了2 个公有属性:Dinner 模型对象和SelectList模型属性。这一方法适合于View 模板中HTML 用户界面元素和业务Model 对象比较接近的场景。如果不符合这一情况,可以考虑创建定制的ViewModel 类,根据视图的使用情况创建优化的对象模型,该对象模型可能完全不同于底层的业务模型对象(Domain Mode

41、l Object)。例如,该ViewModel 类有可能公开不同的属性或者从多个Model 对象中汇总的属性。定制的ViewModel 类不仅可用来从Controller 传递数据到View 去呈现,而且可用来处理从表单提交回来给Controller 的action 方法的数据。针对后一种情况,你可以让Action 方法根据表单提交回来的数据更新ViewModel 对象,接着使用ViewModel 实例来映射或者获取时间的业务模型对象(Domain ModelObject)。定制ViewModel 类提供了很好的灵活性,在任何时候,你发现View 模板中的呈现代码或Action 方法中表单提交

42、代码越来越开始复杂时,你可以考虑使用定制的ViewModel 了。通常,这意味着业务模型对象和View 视图中的用户界面元素不一致,一个中介的定制ViewModel 类就可以发挥作用了。以下节选自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版本中的视图方面的改进今天我们在网站上推出了一个新的ASP.NET MVC 设计陈列室。这个设计陈

43、列室里陈列了你可以下载和轻易使用在你的ASP.NET MVC应用中的免费HTML设计模板。每个设计模板中包括了一个Site.master文件,一个CSS样式表文件,也许还有一套图片,用户控件,以及支持它们的辅助方法等。  陈列室允许你在线预览每个设计,以及下载一个你可以解出和集成进你的网站的模板.zip版本。该陈列室允许任何人在创作共用许可(creative commons license)下创建和提交新的设计。访客可以对它们进行投票,提供反馈。最受欢迎的设计会在陈列室的顶部显示。 我们认为这会给开发人员提供一个很有用的方式来更轻松地创建有吸引力的,与标准兼容的网站。希望还能鼓励大家

44、创建和共享可轻易为他人重用的设计。 即将推出的最终版候选版本中的View方面的改进说到UI这个话题,我想我也应该与大家分享即将推出的ASP.NET MVC最终版候选版本(Release Candidate,简称RC)中的一些与视图有关的改进的细节。除了缺陷修补外,RC版本还融合了若干个特定于视图的新功能和来自社区的建议。 不需要后台代码文件的视图基于许多人的反馈,我们决定做一个变动,这样MVC视图文件在默认情形下不再拥有后台代码文件。这个变动有助于强化视图在MVC世界中的目的(视图意在纯粹的显示,不该包含任何与显示无关的代码),去掉项目中没被使用的文件(对大多数人来说): 在ASP.NET M

45、VC Beta版本中,开发人员可以通过在视图中的Inherits(继承)属性上使用泛型的CLR句法来除去后台代码文件,但这个CLR句法,说得轻一点的话,非常难以发现而且非常难用。ASP.NET MVC开发团队结合了ASP.NET中现有的几个扩展性功能,将在ASP.NET RC版本中,在Inherits属性中提供一个标准VB/C#语言句法: 不使用后台代码文件的另一个好处是,在你将视图文件加到项目中时,你会马上得到intellisense。在Beta版本中,你需要在创建视图后做一次编译才能在其中得到代码intellisense。RC版本将使得添加和立刻编辑视图的流程免去了编译之累,变得更加紧凑。

46、 视图的顶级Model属性在ASP.NET MVC的早期版本中,你使用ViewData.Model属性来访问传给视图的强类型的模型对象: 上面的句法还是可用的,虽然现在ViewPage上还有一个顶级的Model属性可为你所用: 这个属性的作用跟先前的代码例子是一样的,它主要的好处在于它允许你编写的代码更加简明。 HTML/AJAX辅助对象现在允许表达式句法有一个不少人都提出的要求是,在使用视图的HTML和AJAX辅助对象时,在指称Model时使用强类型表达式的句法(而不是字符串)的能力。 在ASP.NET MVC Beta版本中,这是不可能的,因为HtmlHelper和AjaxHelper辅助

47、类并没有在它们的签名中呈示模型的类型,所以大家需要建造直接基于ViewPage<TModel>基类的辅助方法才能达成这个目的。ASP.NET MVC RC 版本引进了新的HtmlHelper<TModel>和 AjaxHelper<TModel> 类型,是在ViewPage<TModel> 基类上呈示的。这些类型现在允许任何人建造使用了表达式句法的强类型HTML和AJAX辅助扩展来指称View的模型。 例如,我可以使用下面的代码建造一个(非常简单的)强类型TextBox辅助方法: 然后可以这样,在我的任意一个视图中,用它来绑定一个Product模

48、型对象: Visual Studio将在源代码编辑器中操作View的模型时,以这种方式对强类型的表达式句法提供完整的intellisense:  注:核心ASP.NET MVC V1程序集中的HTML辅助扩展还将使用现有的句法(不是基于表达式的),我们正计划在MVCFutures程序集中加入基于表达式的版本。当然,你还可以使用字符串或者强类型的表达式,来添加你自己的辅助方法。所有这些内置的辅助方法都是可以去掉的(因为他们是扩展方法),如果你要用自己的版本来替换或覆盖它们的话。 Scaffolding支持ASP.NET MVC RC版本还包括了在Visual Studio中使用新的AS

49、P.NET MVC "Add View"命令创建视图时的自动的"UI scaffolding" 支持。这个scaffolding支持将允许针对任何.NET 类型或对象的自动的视图生成,意味着它对POCO类,LINQ to SQL, LINQ to Entities, NHibernate, SubSonic, LLBLGen Pro,或者任何其他对象模型都工作。Scaffolding引擎使用了反射来获取View的模型类型的公开接口,然后将它们传给scaffolding模板,在生成的视图中填充基于它的合适HTML标识。 例如,假定我们有一个Products

50、Controller类,想创建一个它的"Edit" action,来显示特定产品的编辑视图。使用RC版本,我们可以象这样,在我们的"Edit" action方法中右击,选择"Add View"上下文菜单命令: 然后在"Add View" 对话框中,我们可以表示我们将把Product类型传给我们的View: 我们可以表示我们要创建一个"Empty" 视图模板(象上面那样),或者表示我们要VS针对我们提供的Product对象自动提供一个"Edit"表单视图的基本架子: 如果我们选

51、择"Edit" 模板, VS会自动为我们生成一个文件,该文件含有合适的HTML和验证辅助方法来生成一个可编辑的表单视图: 然后我们可以运行应用,马上得到一个编辑界面:然后我们可以进去,将生成的edit.aspx文件做任意改动。我们发布的scaffolding系统的一个非常棒的东西是,它是使用Visual Studio的内置T4代码生成系统实现的(Scott Hanselman在这里有一篇非常好的相关博客)。随ASP.NET MVC发布的"List(列表)", "Edit(编辑)", "Create(创建)" and

52、 "Details(细节)" 模板可以做完全定制,或者用你自己的T4模板做替换(或者从ASP.NET MVC设计陈列室下载)。所以,如果你自己有特别的方式生成HTML的话,或者想要使用自定义的HTML辅助类(譬如,基于强类型表达式的辅助类),那你可以更新默认的模板,然后scaffolding系统之后就会使用它们。 我们计划允许模板可以在整个机器的层次,以及每个项目的层次上被置换(这样,你可以在源码控制中签入特定于应用的scaffolding模板,在团队成员间共享)。 编辑视图的MSBuild任务在默认情形下,当你编译ASP.NET MVC项目时,它会编译项目中除了视图文件中

53、代码以外的所有代码。在ASP.NET MVC Beta中,你想要编译视图的话,你需要编写你自己的 MSBuild任务。ASP.NET MVC RC版本现在包含了一个内置的 MSBuild 任务,你可以用它来将视图包括成为项目编译过程的一部分。它会核实应用中所有视图和母版页的句法和行内代码,如果遇到问题的话,它会给你编译错误信息。 但因为性能的缘故,我们不建议在开发期间运行它来做快速编译,但将它加到特定的编译配置(例如,staging和部署)或者在与 Build 或 CI (连续集成)服务器一起使用时是非常方便的。 即将推出的ASP.NET MVC RC版本的其他一些功能上面是RC版本中一些特定

54、于视图的功能的简短列表。 在RC版本中,还有许多其他的功能和要求,这些包括:IDataErrorInfo支持,允许模型汇报验证错误信息,以及更丰富的错误验证扩展性以允许你使用自己的方式来汇报模型验证信息到ModelBinders中(IDataErrorInfo支持是建造在这个的基础之上的);新的FileResult和JavaScriptResult的ActionResult 类型(允许你更轻松地下载文件和可执行的JavaScript到浏览器中);内置的 jQuery -vsdoc intellisense支持;重构了的AccountController支持,以促成更简单的表单登录场景的单元测试

55、和扩展性;各种各样的项目模板改进,随处可见的众多扩展性;诸多的缺陷修补;以及若干个在RC出来后我将在博客中讨论的其他很酷的特性等。 我们将在一月份发布ASP.NET MVC的RC版本。我们的计划是,该版本将是ASP.NET MVC V1 API和功能完备,含有0个已知的缺陷。我们将给大家一个简短的时间更新到该版本,好好试用一下,报告任何紧要问题,在那之后不久,我们就将发布正式的V1版本(所以,离现在也不太远了)。 以下节选自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今天早些时候,我们发布了.NET 3.5 SP1 和 VS 2008 SP1的公开beta版,这些服务更新提供了自11月份我们发布这些产品之后所报告的问题的缺陷修补以及性能改进的累积结果,内中还包含了若干新功能和功能增强,势将进一步完善.NET应用的建造(其中的一些细节请见下文)。 我们计划在今夏,作为免费更新,同时发布.NET 3.5 SP1 和 VS 2008 SP1的最终版本,你可以在这里下载和安装这些beta版。 SP1 Beta安装重要注意事项今天发布的SP1 beta版还处

57、于beta状态,所以你在重要的机器上安装时千万要慎重,下面是几个你需要知道的非常重要的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更新否则你的安装会失败。你可以在这里找到可以遵循的确切步骤的更多细节(注:你必须分开卸载这两样东西)。 在你机器上同时拥有Silverlight 2 运行时和.NET 3.5 SP1是没问题的,需要卸载的组件是VS 2008 Tools for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论