本科毕业设计(论文)住宅小区物业管理的设计实现开题
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
.
系 别 信息技术系 专 业 计算机科学与技术 交稿日期
教务处制
一、开题报告
毕业设计(论文)题目 住宅小区物业管理的设计实现 课题背景和意义:
随着我国经济发展和城市化进程,人们对住宅的需求量逐渐增多,住宅物业管理日益为人们所关注。住宅小区已经成为人们安家置业的首选,几十万到几百万的小区住宅比比皆是。人们花的钱越多,不但
对住宅的本身的美观、质量要求越来越高,同时对物业小区的服务和管理也要求很高,诸如对小区的绿化、保安、停车场、维修,甚至对各项投诉都要求小区管理者做的好,做的完善。这样要求小区管理者
对物业管理进行宏观的和微观的细致管理。我选择了"住宅小区物业管理信息系统"做毕业设计,符合社会对物业管理软件的实际需求。而我设计的小区物业管理系统在现代社会是最热门的行业,是最关切老
百姓实际生活的设计,各种人性化的配置,使管理者和业主对住宅小区中的事物能更方便、更快捷、更
满意的得到答复。
通过本次毕业设计,可以使我了解到一个住宅小区物业管理的需求分析、设计、编码、软件测试、维护等一系列的过程。同时,本设计使用最新框架体系ASP.NET MVC,此框架建立简单,可维护性佳,因此选用此框架。希望自己完成的毕业设计有实际发挥用处,对最新的MVC框架有更深刻的认识。
研究的主要内容:
结合一个住宅小区物业管理的实际,研究应用统一建模语言UML2.1对其需求进行初步描述和设计,然
后采用 ASP.NET MVC实现部分功能:
1. 可以注册和登录;
2. 对小区设施的分类、浏览、增加、删除、修改等。
系统要具备直观且美观的操作界面,要进行严格的测试以保证系统的可靠性,要具备可扩展性和可
维护性。
研究方法(或技术路线):
1、 面向对象设计与分析思想
2、 asp.net技术
3、asp.net mvc框架
预期结果:
1. 毕业设计开题报告
外文翻译和文献综述
3. 毕业设计中期自检报告
4. 包含UML模型的分析和设计
说明书
房屋状态说明书下载罗氏说明书下载焊机说明书下载罗氏说明书下载GGD说明书下载
5. 按ASP.NET MVC框架实现设计成果的可运行系统。
6. 毕业设计说明书
7. 答辩用10分钟PPT和1页A4纸的毕业设计简介
进度
计划
项目进度计划表范例计划下载计划下载计划下载课程教学计划下载
:
第7学期第12-17周:完成和UML、ASP.NET MVC相关的外文翻译、文献综述 第7学期第17周:完成毕业设计开题报告
第7学期第18周:完成毕业设计中期自检报告
第7学期第12周-第8学期第12周:按RUP统一过程迭代增量开发“住宅小区物业管理” 第8学期第13-14周:完成毕业设计说明书
第8学期第14周:完成答辩用10分钟PPT和1页A4纸的毕业设计简介
指导教师意见:
周霞同学为课题的展开进行了认真的需求分析,理解客体的目标和
意义。确定技术路线后,查阅了大量的文献,有所体会。从初步的
代码框架来看,方向已经明确,已经入门。可以开题。
指导教师签名:
2009年12月8日
系部意见
审查结果: ? 同 意 ? 不 同 意
系主任签名:
年 月 日
二、阅读文献目录
序号 文献名 文献出处 文献发表时间
ASP.NET 2.0管理系统开1 中国水利水电出版社(罗斌) 2007年9月 发经典案例(C#版)
ASP通用模块及典型系统人民邮电出版社(周新会 傅2 2006年6月 开发实例导航 立宏)
ASP.NET网络开发使用工人民邮电出版社 3 2008年5月 程案例 (刘端阳)
中国计划出版社 4 ASP动态网页设计 2007年8月 (杨晓斌 时恩早)
UML面向对象设计与分5 清华大学出版社(牛丽萍) 2007年7月 析
电子工业出版社(李建中 王6 数据库系统原理 2007年5月 珊)
ASP.NET 2.0技术详解与北京希望电子出版社(李万7 2007年2月 应用实例 宝)
ASP.NET+SQL Server动清华大学出版社(王国胜 柴() 8 2009年1月 态网站开发 宝杰)
9 ASP.NET2.0编程珠玑 清华大学出版社(杰克梅尔) 2006年12月
10 UML 2.0学习指南 清华大学出版社(迈尔斯) 2007年2月11 ASP.NET开发实战详解 电子工业出版社(胡勇辉) 2006年7月
ASP.NET数据库项目案例清华大学出版社(吴晨 孙少12 2004年12月 导航 波 叶莞)
深入剖析ASP.NET组件设13 电子工业出版社(黄忠成) 2004年12月 计
ASP.NET+SQL Server动电子工业出版社(盖江南、14 2006年7月 态网站设计宝典 王勇、阎文丽)
ASP.NET+SQL组建动态15 电子工业出版社(张玉平) 2006年3月 网站
人民邮电出版社(Chris Hart、ASP.NET 2.0经典教程—16 John Kauffman、David 2007年2月 —C#篇 Sussman、Chris Ullman)
17 软件工程导论 冶金工业出版社(刘怀亮) 2007年6月
18
19
20
21
三、文献综述
注意:学生阅读文献后,必须写出3000字左右的综述,作为开题内容之一。(可增页)
为了顺利完成此次毕业设计报告,我翻阅了大量与课题相关的书籍,包括ASP.NET、数据库、UML、软件工程等方面的书籍。以下是根据所阅读的书籍整理出来的文献综述。
1.
要做好一个课题,首先要了解整个课题的发展顺序,我查阅了相关的软件工程的书,主要以《软件工程导论》此书为重点,其中提到:软件工程是现代科学技术知识在设计和构造计算机程序中的实际应
用,其中包括管理在开发、运行和维护这些程序的过程中所必须的相关文档资料。软件工程研究的主要内容包括软件开发技术和软件工程管理两个方面。通过研读本文献,我总结出:开发系统的时候也必须要建立合理的模式:而所谓合理的模式就是软件工程告诉我们的在开发一个系统的时候所需要的五步曲:获取需求、需求分析、设计、编码、测试。
A、理解用户真正的需求。在进入正式开发之前,必须先从用户处获取准确的需求。在这上面花费
相当时间是很必要的。
B、需求分析。需求分析需要做的事情有:高层构思、确立系统目标、划分业务领域、现行业务分
析、建立业务模型(Enterprise Model)、信息需求分析、用户视图
规范
编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载
化、数据元素标准化与一致性控制。
C、设计过程。设计阶段的工作包括对分析模型进行必要的修改,同时可能需要对某些类结构做一
些修改,确定用户表示层(也就是通俗所说的界面定义)、用户服务层、业务逻辑层、数据库服务层和具
体数据库所需要做的工作。同时需要确定使用的体系结构(如B/S还是C/S)和开发工具(如ASP,ASP.NET)
D、编码。进入编码工作之后,依然可能会发现前面分析或设计阶段的某些错误,这时应返回到前
面的阶段进行必要的修改。同时在编码前规定编码的风格并在开发过程中保持一致的风格。
E、测试。测试是系统投入使用前最关键的一个步骤。即使是小项目也应该严格地进行测试。就实际上就是一个把错误留给自己还是留给客户的问题。
2.UML
在UML方面,我主要查阅了《UML面向对象设计与分析》,该书全面介绍了使用UML进行软件设计、分析与开发的知识。UML适合于以体系结构为中心、用例驱动、迭代式和渐增式的软件开发过
程,其应用领域非常广泛,本书内容包括面向对象的分析方法和设计方法,面向对象分析的三层设计,
用例图、类图、对象图等。UML在WEB应用程序中的应用,使用C++语言实现UML模型的基本原理与方法。我重点看了第二章(用例图)、第三章(类图、对象图)、第五张(顺序图)等章节,把所学的
知识应用到课题中去。我还查阅了《UML 2.0学习指南》此书,无论视UML为一种蓝图语言、草稿工具还是一种编程语言,这本书都教给你必须知道的知识,补充了我在UML建模上的欠缺。 3.
在数据库方面,我主要翻看了之前在校学过的《数据库系统原理》。数据库技术是一门综合性的软件技术,是使用计算机进行各种信息管理的必备知识。它的发展有三个阶段:(1)数据在三个世界间的转换过程与E-R方法(2)三种结构数据模型(3)关系模型及关系规范化。
数据库(Data Base,DB)是一个有穷的、有结构的、有意义的、相关的、可共享的、利用计算机
技术存取的数据集合。数据库管理系统是为定义、建立、维护、使用及控制数据库而提供的有关数据管
理的系统软件。它实现建库、删库、修改、存储、检索和维护数据库的功能,向用户提供一整套操作命
令,并负责解释执行这些命令。
数据库系统(Data Base System,DBS)是指带有数据库并利用数据库技术进行数据信息管理的计
算机系统。一个数据库系统应包括计算机系统、数据库、数据库管理系统、应用程序系统及用户和数据
库管理员等。
《ASP.NET+SQL组建动态网站》:要构建一个SQL Server数据库驱动的动态网站,必须有扎实的
SQL Server数据库基础。SQL是Structure Query Language(结构化查询语言)的缩写,其功能包括查询、
操作、定义和控制4个方面,是一个通用的、功能极强的关系数据库语言。对SQL语言常用语句和函数的熟悉,将便于操作SQL Server数据库。SQL Server 2000数据库使用的是Transact—SQL,是增强版本的SQL语言
4.ASP.NET
我把重点放在ASP.NET技术上,因为在这方面的知识可能比较欠缺。我查阅了许多相关的书籍文
献。
(1)《ASP.NET+SQL Server动态网站设计宝典》:ASP.NET是ASP的升级版本,它提供了一个统一的
WEB开发平台,可以在Web服务器上开发和运行WEB窗体以及XML WEB SERVICES应用程序。ASP.NET页在服务器上执行并生成发送到桌面或移动浏览器的标志(HTML,WML或XML)。ASP.NET页采用用户界面与应用程序逻辑相隔离的技术,其中用户界面部分的组成元素以及HTML代码保存在.aspx文件中,而任何.NET编程语言编写的应用程序逻辑代码则保存在.aspx.vb文件或.aspx.cs文件中。所有ASP.NET代码都是编译的,而不是解释的。
(2)《ASP.NET 2.0管理系统开发经典案例(C#版)》:本书基于ASP.NET 2.0核心组建技术,使用Visual C# 2005/Microsoft SQL Server 2005(SQLEXPRESS)编程语言和数据库管理系统,以丙谷胺酒店管理系
统、人事工资管理系统、固定资产管理系统等当今最为经典实用的管理信息系统的商业逻辑为基础,以
实际开发流程为线索,具体地介绍这些管理信息系统在网站设计模式下的开发背景、业务分析、功能分
析、数据库分析、代码编写的过程和方法,让我迅速了解和掌握现代管理信息系统开发的行业特点和功
能需求,从而全面提升以网站模式开发管理信息系统的统筹操作能力。
(3)《ASP.NET 2.0经典教程——C#篇》:本书是一部专门的ASP.NET 2.0开发指南,全书紧紧围绕ASP.NET 2.0技术精髓展开,一步一步学习使用ASP.NET 2.0创建动态的、数据驱动的和复杂的Web网站。全书共16章,首先着重介绍ASP.NET 2.0以及如何使用VWD构建网页,然后依次介绍如何创建
网站、ASP.NET网页、服务器控件、成员与身份、使用主题样式化、事件与代码、读数据、数据源控
件、数据绑定控件和数据缓存数据源控件、写数据、代码、组件化、角色和用户配置文件、Web服务、电子商务、性能、错误处理、部署测试和完善。
5.ASP.NET MVC
由于关于MVC的书籍相当的少,我查看了《Professional ASP.NET MVC 1.0》这本电子书,整本书
是用NerdDinner这个例题,然后通过这个具体的实例阐述asp.net mvc的框架结构。使用Asp.net MVC先开发一个小的应用NerdDinner,一个在线预定餐位系统,预览一下Asp.net MVC的基本概念。MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。这本书很适合初学MVC的读者学习,它从易至难,一步一步带领读者进入MVC的世界。除此之外,我还在网
上下载了相关MVC的视频,有了书籍与视频相结合的方法,我相信,我一定能把ASP.NET MVC学好。
以上5方面是我平日里收集的参考文献资料,对于整个毕业设计提供了不少的帮助,我明确了毕业设计的方面以及以后努力的目标,加上新技术的注入,我对这次毕业设计的完成充满
了信心。
四、文献翻译
注意:每个学生必须提交15000个以上印刷符号、与课题研究密切相关的外文文献的中文翻译文章或者
读书报告。(可增页)
原文:Controllers and Views
(译文)
与传统的网络框架(传统的ASP,PHP和ASP.NET Web窗体等),传入的URL通常映射到磁盘上的文件。例如:对“/ Products.aspx”或“/ Products.php”这样的URL请求可能是由“Products.aspx”或“Products.php”文件处理。基于Web的MVC框架图映射URLs服务器代码的方式略有不同。 而不是传入的URL映射到文件,反而是URL映射类的方法。 这些类被称为“控制器”,他们负责处理传入的HTTP请求,处理用户输入,检索和保存数据,并确定响应发送回客户端(显示HTML,下载文件,重定向到一个不同的URL等)。
现在,我们已经建立了我们的NerdDinner应用程序的基本模型,我们的下一个步骤将添加控制器
的应用程序,利用它提供用户在我们的网站搜索晚餐的数据列表/细节的体验。
我们将开始通过右键我们的网站项目“控制器”文件夹,然后选择添加->控制器菜单命令(提示:您也可以执行用Ctrl-M,按Ctrl-C这个命令)这将弹出“添加控制器”对话框:我们将命名新的控制器“DinnersController”并点击“添加”按钮。 Visual Studio将然后添加在我们的\控制器目录DinnersController.cs文件:它还将在代码编辑器开放新DinnersController类。
我们希望让访问者使用我们的应用程序来浏览即将举行的晚宴,并让他们点击列表中的任何晚餐,查看有关它的具体细节。我们将通过我们的应用程序发布从下列网址是:显示即将到来的晚餐的HTML列表 。
显示有关特定晚宴的“id”,在URL中嵌入参数将匹配数据库中晚餐
DinnerID。
例如:/ Dinners/Details/2将显示有关于晚餐的DinnerID值为2 的HTML页面的详细信息。我们可以通过添加两次公开的“行动方法”到DinnersController类来初步实现这些URL:
public class DinnersController : Controller {
//
// GET: /Dinners/
public void Index() {
Response.Write("
Coming Soon: Dinners
");
}
//
// GET: /Dinners/Details/2
public void Details(int id) {
Response.Write("
Details DinnerID: " + id + "
");
}
}
然后,我们可以运行应用程序并使用我们的浏览器来调用它们。在键入 “/Dinners” 的URL将导致Index() 方法来运行,并会发回如下的回应:在键入“/ Dinners/Details/2” 的网址将导致Details()方法来运行,送回答复如下:你可能想知道ASP.NET MVC怎么知道创建DinnersController类并调用这些方法。要理解这一点让我们来看看如何快速查找路由工作。
ASP.NET MVC中包括一个功能强大的URL路径引擎提供如何控制映射到控制器类中具有很大的灵
活性。它使我们能够完全自定义的ASP.NET MVC选择哪个控制器类来创建,用这方法来调用它,以及配置的变量可以自动从URL解析/ QueryString和传递给该方法的不同方式参数。它提供的灵活性,完全优化了SEO(搜索引擎优化)网站以及从应用程序发布我们想要的的任何URL结构。
在默认情况下,新的ASP.NET MVC项目提出的URL路径按照已预登记的规则设置。这使我们能够很
容易地就开始不必配置任何东西的应用程序。默认路由规则可以找到登记在“应用程序”的项目类别,我们可以双击打开“Global.asax”文件,在我们项目的根目录:默认的ASP.NET MVC的路由规则登记在“RegisterRoutes”类的方法:
public void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL w/ params
new { controller="Home", action="Index", id="" } // Param defaults );
}
在“routes.MapRoute()“方法调用上面默认的路由规则传入的URL映射到控制器类使用URL的格式:”/{controller}/{action}/{id}“,其中”控制器“的名称是routes.MapRoute控制器类的实例化,“行为”是公共方法的名称来调用它,而“id”是一个在可选参数嵌入在可以作为参数传递方法的URL中。第三个参数传递给“MapRoute()”方法调用是一个默认值设置为使用controller/action/ id,他们没有显示在本网址(Controllers=“Home”,Action=“Index“,Id ="")。下面是一个表,演示如何不同的网址映射到默认的
“/{controllers}/{action}/{id}” 路线规则:
DinnersController Details(id) id=2
DinnersController Edit(id) id=5
DinnersController Create() N/A
DinnersController Index() N/A
HomeController Index() N/A
HomeController Index() N/A
最后3行显示的默认值((Controller = Home, Action = Index, Id = "")被使用。因为如果
没有指定注册的话 “Index”方法为默认行为名称,“/Dinners”和“/Home”的网址导致Index()
行为方法是建立在他们控制器,类中调用。因为如果没有指定注册“Home”控制器是为默认控制器,
URL导致HomeController被创建,Index()动作方法被调用。如果你不喜欢这些URL的默认路由规则,
值得高兴的是他们容易改变,只要编辑上述方法RegisterRoutes。对于我们的NerdDinner应用程序,
尽管我们不会改变默认URL路由规则的任何,但我们只需使用它们原样。
现在让我们来取代目前执行的Index()和Details()行为方法,而使用我们的模型。我们将使用DinnerRepository类来建立较早实施的行为。首先,我们将在 “NerdDinner.Models”命名空间增加一个“using”的声明,然后作为DinnerController上的一个域上声明DinnerRepository实例。
在本章的后面,我们将引进“Depe ndency Injection”的概念,并显示另一个控制器的方法获取对DinnerRepository的引用,能够使更好单元测试参考,但现在我们只创建一个实例DinnerRepository就像下面这样的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using NerdDinner.Models;
namespace NerdDinner.Controllers {
public class DinnersController : Controller {
DinnerRepository dinnerRepository = new DinnerRepository();
//
// GET: /Dinners/
public void Index() {
var dinners = dinnerRepository.FindUpcomingDinners().ToList();
}
//
// GET: /Dinners/Details/2
public void Details(int id) {
Dinner dinner = dinnerRepository.GetDinner(id);
}
}
}
现在,我们已经准备好生成HTML去响应用我们的检索到的数据模型对象。
虽然可以在我们的行为方法上写代码来组合HTML语言 ,然后使用Response.Write() 辅助方法将其发送回客户端,这种方法很快变得相当笨拙。对于我们来说更好的方法只能在DinnersController行动方法中执行应用程序数据逻辑,然后传递到需要使用HTML响应到一个单独的“view”模板的数据,它负责输出响应到的HTML。正如我们将看到,“view”模板是一个文本文件通常包含HTML标记的组合和嵌入式渲染代码。
从我们的视图渲染器分离控制器逻辑带来几大好处。特别是有利于执行明确的应用程序代码和用户界面格式代码之间的“关注点分离”。这使得它更容易从用户界面渲染逻辑器分离单元测试应用程序逻辑器。它可以更容易地修改用户界面模板,无需渲染来使应用程序代码变化。 它可以方便开发人员和设计师共同合作项目。
我们更新DinnersController类来表明我们要使用视图模板来发回一个HTML用户界面的回应,它改变了返回类型“void”代替返回类型“ActionResult“两种行为方法的方法签名,然后 , 我们可以调用在Controller上的View()基类辅助方法返回“ViewResult”对象: public class DinnersController : Controller {
DinnerRepository dinnerRepository = new DinnerRepository();
//
// GET: /Dinners/
public ActionResult Index() {
var dinners = dinnerRepository.FindUpcomingDinners().ToList();
return View("Index", dinners);
}
//
// GET: /Dinners/Details/2
public ActionResult Details(int id) {
Dinner dinner = dinnerRepository.GetDinner(id);
if (dinner == null)
return View("NotFound");
else
return View("Details", dinner);
}
}
我们上面所使用的View()辅助方法的签名如下:第一个参数的View()辅助方法是视图模板文件的名称,我们要用来使HTML响应。第二个参数是一个模型对象包含以便使HTML响应的视图模板需要的数据。在Index()动为方法中,我们调用View()辅助方法指出我们要使用
“Index”视图模型的晚餐的Html列表。我们通过晚宴对象的一组序列的视图模板生成名单:
//
// GET: /Dinners/
public ActionResult Index() {
var dinners = dinnerRepository.FindUpcomingDinners().ToList();
return View("Index", dinners);
}
在我们的Details()的行动方法,我们试图检索使用网内提供的id的晚餐对象。如果找到有效的晚餐,我们调用View()辅助方法,表明我们要使用“Details”视图模板来呈现检索晚餐对象。如果请求一个无效的晚餐,我们提供一个有帮助的错误消息,使用“NotFound”视图模板指出Dinner中不存在此晚宴(和一个就取模型名称的View()辅助方法的重载版本):
//
// GET: /Dinners/Details/2
public ActionResult Details(int id) {
Dinner dinner = dinnerRepository.FindDinner(id);
if (dinner == null)
return View("NotFound");
else
return View("Details", dinner);
}
现在,让我们落实“NotFound”,“Details”和“Index”视图模板。
我们将开始实施“NotFound”视图模板,这显示友好的错误消息来表明所要求的晚餐无法找到。我们将通过文本光标定位控制器内的行为方法来创建一个新的视图模板,并通过右击并选择“Add View”菜单命令,(我们也可以执行用Ctrl -M,按Ctrl - V这个命令):这将弹出一个如下的“Add View”对话框。在默认情况下,对话将预先填充视图的名称来创建以配合出现对话框时光标所在的地方的行为方法的名称(在这个
“Details”的案例中)。 因为我们希望首先落实“NotFound”模板,所以我们将覆盖此视图名称并设置它改为“NotFound”:当我们点击“Add”按钮时,Visual Studio将在“\Views\Dinners” 目录下创建一个新的”NotFound.aspx“视图模板(如果目录不存在它将创建此
目录):它还将开辟新“NotFound.aspx”视图模板在代码编辑器:视图模板默认情况下有两个“内容
区域”,我们可以添加内容和代码。第一个允许我们自定义HTML页送回的“标题”。 第二个允许我们自定义HTML页送回的“主要内容”。要实现我们的“NotFound”视图模板,我们会添加一些基本内容:
Dinner Not Found
Dinner Not Found
Sorry - but the dinner you requested doesn't exist or was deleted.
然后,我们可以尝试一下在浏览器内。要做到这一点,让我们请求 “/ Dinners/Details/9999” 页面。这指的是晚宴目前不存在于数据库中,并将导致DinnersController.Details()行为方法 , 使用我们的“NotFound”视图模板:有一件事你会注意到在上面的截图是我们的基本视图模板继承了一堆
的HTML围绕屏幕上的主要内容。这是因为视图模板使用的是“母版页”模板 , 使我们能够通过整个网站上所有的意见采用统一的布局。我们将在本章后部分讨论如何母版页工作。
现在,让我们贯彻落实“Details”视图模板,这将生成一个单一的晚餐模式的HTML。我们完成这个通过在Details行动方法定位文本光标,然后右击并选择“Add View”菜单命令(或按Ctrl -,M,按Ctrl - V):这将弹出的“Add View”对话框。我们会保留默认视图名称(“Details”)。我们还将在对话框中选择“创建一个强类型视图”复选框和选择模型类型的名称(使用组合框下拉),这名称我们是从控制器传递给视图的名称。对于这个视图,我们传递一个晚宴对象(完全限定此类型的名称是:
“NerdDinner.Models.Dinner”):不像以前的模板,我们选择创建一个“Empty View”,这一次我们会选择自动“scaffold”视图使用“Details”模板。表明我们可以通过在上面的对话框中下拉改变 “Vies content”。“Scaffolding”将在Dinner模型上生成初步实现details视图模板。这为我们提供了一种简单的方法快速地执行视图模板。
当我们点击“Add”按钮,Visual Studio将为我们在
“\Views\Dinners” directory目录下创建一个新的”Details.aspx“视图模板文件:它还会在代码编辑器打开新的“Details.aspx”视图模板。 它将包含初始基于Dinener模型的details视图scaffold实现,scaffolding引擎使用.NET反射来看看暴露通过它的公共属性,将适当的内容添加在每个它找到的类型:
Details
Details
<%=Html.ActionLink("Edit", "Edit", new { id=Model.DinnerID }) %> | <%=Html.ActionLink("Back to List", "Index") %>
我们可以请求
“/ Dinners/Details/1” 网址来看看 “Details”执行scaffold就像在浏览器中。 使用这个网址将显示我们的晚餐,当我们第一次创建它的时候我们手动增加数据库:这让我们快速建立和运行,并提供了一个Details.aspx视图初始实现。然后我们可以去调整它的定制用户界面以
令我们满意。
当我们更深入地了解Details.aspx模板,我们会发现它包含静态HTML,以及嵌入式渲染代码。当
视图模板时呈现时代码掘金执行代码,并且代码掘金执行代码包含他们然后将结果呈现给输出流的模板。
我们可以从我们的控制器通过使用强代码类型的“Model”属性的“Dinner”的模式对象写代码在。当在编辑器中通过这种“Model”属性Visual Studio提供了完整的代码:为了我们的最后Details视图模板源如下我们做一些调整:
Dinner: <%= Html.Encode(Model.Title) %>
<%= Html.Encode(Model.Title) %>
When:
<%= Model.EventDate.ToShortDateString() %>
@
<%= Model.EventDate.ToShortTimeString() %>
Where:
<%= Html.Encode(Model.Address) %>,
<%= Html.Encode(Model.Country) %>
Description:
<%= Html.Encode(Model.Description) %>
Organizer:
<%= Html.Encode(Model.HostedBy) %>
(<%= Html.Encode(Model.ContactPhone) %>)
<%= Html.ActionLink("Edit Dinner", "Edit", new { id=Model.DinnerID })%> | <%= Html.ActionLink("Delete Dinner","Delete", new { id=Model.DinnerID})%>
当我们访问
“/ Dinners/Details/1” 网址再次它会提供像这样:
现在,让我们贯彻落实“Index”视图模板,这会产生大量的即将上市晚餐的列表。我们将用索引行为方法来定位文本光标,然后右击并选择“Add View”菜单命令(或按键Ctrl - M, Ctrl - V)。在“Add View”对话框中,我们将保持命名为“Index引”视图模板并选择“创建一个强类型的视图”复选框。这一次,我们会选择自动生成一个“List”视图模板,并选择“NerdDinner.Models.Dinner”作为模型类型传递到视图(这是因为我们已表明我们正在创造一个“List”scaffold会导致添加视图对话框,我们列从我们的控制器传递晚餐对象序到视图):当我们点击“Add”按钮,Visual Studio将为我们在我们的“\View \Dinners”目录创建一个新的“Index.aspx”视图模板文件。它将“scaffold”初步实现,它提供了通过Dinners视图页面表列表。
当我们运行应用程序和访问“/Dinners/” 网址它会使我们的晚餐名单如:该表的解决
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
为我们
提供了如我们的晚餐数据的布局网格,这并不是我们希望面对消费者的晚餐列表。我们可以更新Index.aspx视图模板和修改它列出少列数据,并使用
元素使用下面的代码而不是个表: Upcoming Dinners
<% foreach (var dinner in Model) { %>
-
<%= Html.Encode(dinner.Title) %>
on
<%= Html.Encode(dinner.EventDate.ToShortDateString())%>
@
<%= Html.Encode(dinner.EventDate.ToShortTimeString())%>
<% } %>
我们使用 “var”关键字,上面foreach循环模型的每个晚餐,那些不熟悉C#3.0中可能会认为使用“void”的意思是晚餐对象是无效的.它不是意味着编译器使用类型对“模型”属性强类型(这是“IEnumerable的类型” )和编译本地的“晚餐”变量作为Dinner类型,这意味着我们能为它在代码块得到完整的智能感知和编译时检查:当我们在我们的浏览器击中了/Dinners网址,我们更新的视图如下:这是寻找更好的期待,但不是完全没有。最后一步是让最终用户点击列表中的个人晚餐,看到他们的详细细节。我们将实施渲染HTML超链接元素链接到这个对我们DinnersController的Details方法。
我们可以在两种方法之一的Index视图产生这些超链接。第一种是手动创建的HTML。 <%= Html.ActionLink(dinner.Title, "Details", new { id=dinner.DinnerID }) %>第一个参数的Html.ActionLink()辅助方法是链接文本显示(在这种情况下,晚宴的标题),第二个参数是控制操
作的名称,我们要生成的链接(在这种情况下,Details方法),第三个参数是一个参数设置为发送的
行为(实施一个属性名称/值匿名类型)。在这种情况下 , 我们指定了我们要链接到的晚餐的“id”参数,因为默认的URL路径在ASP.NET MVC的规则是
"{Controller}/{Action}/{id}" Html.ActionLink
()辅助方法将生成以下输出:
.NET Futures
对于Index.aspx视图我们将使用Html.ActionLink()辅助方法的做法,让每个晚餐列表中的网址链
接到适当的细节:
Upcoming Dinners
Upcoming Dinners
<% foreach (var dinner in Model) { %>
-
<%= Html.ActionLink(dinner.Title, "Details",
new { id=dinner.DinnerID }) %>
on
<%= Html.Encode(dinner.EventDate.ToShortDateString())%>
@
<%= Html.Encode(dinner.EventDate.ToShortTimeString())%>
<% } %>
现在当我们击中晚餐的/Dinners 网址列表看起来就像如下:当我们点击任何列表中的定位,我们
将看到有关的细节的晚餐:
当解决视图模板ASP.NET MVC的默认应用程序使用公约为基础的目录命名结构。当在控制器类引用
视图这使开发人员避免必须完全符合位置路径。默认情况下的ASP.NET MVC将这样的视图模板文件放在 \ Views \ [ControllerName] \ 目录下的应用程序。例如,我们一直在用DinnersController类,其中明确提到三个视图模板:“Index”, “Details”和“NotFound”。 默认情况下ASP.NET MVC将在应用程序的根目录下的\Views\Dinners查找这些视图:注意上面目前如何在项目有三个控制器类(DinnersController,HomeController和AccountController,当我们创建项目前两控制器类是默认添加的),并在\Views directory有3个子目录(每个都有控制器)。
视图从Home和Accounts控制器引用讲自动解决他们各自\Views\Home and \Views\Account目录下的视图模板。如果不能找到视图模板他将在\Views\Shared子目录下查找,提供了一种方法来存储视图模板的重新使用在多个控制器的应用程序内。当ASP.NET MVC尝试解析视图模板,将首先检查在
\Views\[Controller]特定的目录,如能找不到视图模板它将在\Views\Shared目录下查找。
当谈到命名个人视图模板,建议指导说有视图模板分享导致它提供了相同的名称。例如,上述的
“Index”行为方法的例子是使用“Index”视图显示视图的结果,而“Details”行为方法是使用
“Details”视图来呈现的结果。这使得可以轻松快速地了解哪些模板是与每个行为有关系。 当视图模
板具有在控制器上调用相同的名称的行为方法开发人员不需要明确指定视图模板的名称。我们可以不要
再通过模型 。
注意:请将外文文献原文复印件附在后面。