目录
1.1 ASP .NET MVC 简介
ASP .NET MVC 框架是MVC 设计模式的实现方式之一。
1.1.1 ASP .NET MVC 主要概念
MVC是一种软件设计模式,即Model(模型)、View(视图)和Controller(控制器)。主要设计目标是将用户接口和逻辑层相互分离,以便开发人员更好地关注逻辑层的设计和测试,并使整程序具备清晰的结构。
MVC执行流程:浏览器请求——控制器——模型——视图——显示结果
Model(模型):实现应用程序数据逻辑的应用程序组件,通常被称为数据模型。模型对象会检索模型状态,并将其存储在数据库中。
View(视图):显示应用程序用户界面(UI)的组件。ASP .NET MVC 支持Razor视图引擎,所以视图推荐使用CSHtml页面,而不是ASPX页面。
Controller(控制器):处理用户交互、使用模型并选择视图来显示界面的组件。在ASP .NET MVC 应用程序中,视图仅显示界面,控制器则用于处理和响应用户输入交互。例如:控制器处理查询字符串值,并将这些值传递给模型,而模型使用这些值来查询数据库。
1.1.2 ASP .NET MVC5的发展历程
1.ASP .NET MVC 1概述
2007年2月,Microsoft公司的Scott Guthrie("ScottGu")飞往美国东海岸参加会议。在旅途中,他草拟编写了ASP .NET MVC的内核程序。这是一个只有几百行代码的简单应用程序,但它却给大部分Microsoft公司的Web开发人员带来了美好前景。ASP .NET MVC1于2009年3月13日正式发布。
2.ASP .NET MVC 2概述
ASP .NET MVC2于2010年3月发布。ASP .NET MVC 2的主要特点:
(1)带有自定义模板和UI辅助程序。
(2)在客户端和服务器端基于特性的模型验证
(3)强类型HTML辅助程序
(4)改善的Visual Studio开发工具
ASP .NET MVC 2中增加了许多的API功能以增强其专业性,具体如下:
(1)支持将大型应用程序划分为减
(2)支持异步控制器
(3)使用Html.RenderAction支持渲染网页或网站的某一部分
(4)许多新的辅助函数、使用工具和API增强
3.ASP .NET MVC 3概述
在Web Matrix 发布的推动下,ASP .NET MVC 3在ASP .NET MVC 2发布之后的第10个月推出,ASP .NET MVC3的主要特点如下:
(1)支持Razor视图引擎
(2)支持 .Net 4数据注解
(3)改进了模型验证
(4)提供更强的控制和更大的灵活性,支持依赖项解析和全局操作过滤器。
(5)丰富的JavaScript支持,其中包括非侵入式JavaScript、Jquery验证和Json绑定。
(6)支持NuGet,可以用来发布软件,管理整个平台的依赖。
Razor语法易于输入和阅读,不像传统的Web Forms视图引擎那样具有类似于XML的繁杂语法规则
4.ASP .NET MVC 4概述
它的主要功能如下:
(1)支持ASP .NET Web API的功能
(2)增强了默认的项目模板
(3)添加了使用JQuery Mobile的手机项目模板
(4)支持显示模式(Display Mode)
(5)支持异步控制器的任务
5.ASP .NET MVC每个目录意义
①/App_Data:数据的物理存储区,即本地化的数据库文件或数据文件
②/App_Start:包含多个静态配置类,执行应用程序的初始化任务
③/Content:放置应用程序的静态内容,如CSS、可下载的文件及音乐文件等。
④/Controllers:放置控制器文件。控制器文件是后缀名为.cs或.vb的类文件
⑤/Models:放置数据模型对象的文件,如.cs、.vb、.edmx和.dbml等。
⑥/Scripts:放置JavaScript、jQuery文件,文件后缀名通常为.js
⑦/Views:放置视图文件,文件后缀名为.cshtml或.aspx
⑧/Global.asax:全局应用程序类文件
⑨/Web.config:应用程序配置文件
1.2 视图
视图基架类型——
基架 | 描述 |
---|---|
Create | 创建一个视图,其中带有创建模型新实例的表单,并为模型类型的每一个属性生成一个标签和输入框 |
Delete | 创建一个带有删除现有模型实例的表单,并为模型的每一个属性显示一个标签以及当前该属性的值 |
Details | 创建一个包含了模型类型的每一个属性的标签及其响应值 |
Edit | 创建一个带有编辑现有模型实例的表单,并为模型类型的每一个属性生成一个标签和输入框 |
Empty | 创建一个空视图,使用@model语法指定模型类型 |
Empty(without model) | 与Empty基架一样创建一个空视图。但是,由于这个基架没有模型,因此选择此基架模型不需要选择模型类型。这是唯一不需要选择模型类型的一个基架类型(常用) |
List | 创建一个带有模型实例表的视图,为模型类型的每一个属性生成一列,确保操作方法向视图传递的是IEnumerable<YourModelType>类型。同时为了执行创建/编辑/删除操作,视图中还包含了指向操作的链接(数据管理常用) |
1.2.1模板页面
1._ViewStart.cshtml
该文件默认位置:/Views/_ViewStart.cshtml。它的特点是预加载。在Views目录下的任何视图页面被载入前,_ViewStart.cshtml会预先加载,即页面执行前,会寻找是否存在此文件,如果存在,则先载入_ViewStart.cshtml执行。
打开该为念,默认代码仅有一句@{Layout="~/Views/Shared/_Layout.cshtml";},表示Views目录下的所有视图,以/Views/Shared/_Layout.cshtml为布局模板页面。
2._Layout.cshtml
该文件的默认位置:/Views/Shared/_Layout.cshtml。它通常称为布局页、母版视图和模板页等,它有两段特别的Razor声明。
(1)@RenderBody。它起到“body占位符的作用”,将_Layout.cshtml作为母版页的子视图页面,在没有特别声明的情况下,子视图页面的所有内容填入到_Layout.cshtml的@RenderBody所在位置。该方法不需要参数,而且只能在视图页面中出现一次。
(2)RenderSection。它的作用是“块占位符”,即以指定名称的方式,将子页面中定义的代码块填入到_Layout.cshtml的@RenderSection所在位置。