ASP.NET MVC5基础 – MVC文件架构
创建MVC项目
首先,我们使用Visual Studio2019创建一个MVC架构的应用程序。步骤如下:
首先打开VS2019,在启动页选择【创建新项目】。
然后选择创建 ASP.NET Web 应用程序。
填写项目名称,点击创建。
选择MVC,去掉高级选项中的【为HTTPS配置】,然后点击创建。
这时我们的MVC结构的项目就创建完成了,目录结构如下:
MVC目录结构
下面我们介绍下MVC的目录结构。
1. Views(视图)
存放与应用程序有关的 HTML 文件。
2. Controllers(控制器)
存放负责处理用户输入及响应的控制器类。
3. Models(模块)
存放用来显示到HTML中的程序模型类。
4. App_Start(入口处理程序)
包含应用程序的配置逻辑文件。
5. App_Data(应用程序存储文件)
用来存储应用程序数据。通常以文件形式包含数据存储。
6. Content(存放静态文件)
页面显示用到的静态文件,例如样式表css文件,图标,图片等内容。
7. Scripts(存放JavaScript文件)
存放js文件。
8. fonts(存放字体文件)
存放字体文件。
9. Global.asax(全局程序设置)
主要是web应用程序的全局设置文件。
10. packages.config(管理NuGet包)
用于跟踪管理已安装的软件包及其各自的版本。
11. Web.config(网站配置)
存放一些应用程序用到的配置信息。
MVC主要文件详解
Global.asax
global.asax这个文件包含全局应用程序事件的事件处理程序。
比如,我们可以在这个文件中添加一个当应用程序遇到未处理的异常时的代码。那么当应用程序在运行过程中遇到了异常,则会调用这段代码。
再比如,我们可以添加一个当应用程序启动时,适用于全局范围的初始化代码,例如路由规则,筛选规则,文件捆绑规则等,那么这些规则在接下来所有的应用程序中都适用。我们创建的MVC项目默认给我们添加了这三个规则。如图:
可以看到,MvcApplication类继承自HttpApplication,HttpApplication是定义对 ASP.NET 应用程序内所有应用程序对象公用的方法、属性和事件。所以global中能处理的事件不止我刚才提到的两种,更多详细内容可查看我的ASP.NET MVC5基础 – Global.asax详解这篇文章。
如图所示,Application_Start函数给所有应用程序注册了路由,筛选,打包器三个规则,但这三个规则没有直接写在函数中,而是使用了App_Start文件下的配置类来管理。接下来我们就来看App_Start这个文件夹的作用。
App_Start文件夹
App_Start文件夹存放的是应用程序启动时全局配置的逻辑文件。
- BundleConfig(打包器)
作用:将静态文件(例如css,js文件)打包,便于调用。 - FilterConfig(过滤器)
作用:可以判断用户登录和权限,动态Action管理,防篡改等。 - RouteConfig(路由器)
作用:将浏览器的URL请求映射到特定的MVC控制器动作。也就是将网站的URL不再以.html或.aspx结尾,而是设定为统一的模式来显示。
Controller
MVC的核心就是Controller(控制器),它负责处理浏览器传送过来的所有请求,并决定要将什么内容响应给浏览器。Controller文件夹下储存的就是各种控制器文件。
控制器本身只是一个类,该类有许多方法。在这些方法中,只要是公开方法,该方法就会被视为是一种动作(Action)。只要有动作存在,就可以通过该动作方法接收网页请求并决定响应视图。
同时,按照MVC的约定,控制器文件需符合以下规则:
1. Controller必须为公开类;
2. Controller名称必须以Controller结尾;
3. 必须继承自MVC内建的Controller类;
4. 所以Action动作方法必须为公开方法。
关于Controller的详细使用方法可查看我这篇文章:MVC5基础-控制器(Controller)详解
Models
Models文件夹下,储存的是最终显示到View页面中的视图模型。Model主要负责维持数据状态,通过它将数据从数据库中检索出来传递给Controller处理,客户端传过来的数据也是通过Model传回数据存储系统中。
可以说,Model(视图模型)是View(视图)连接数据库的一个桥梁,它将呈现在用户面前的内容转换为可存储在数据库中的内容,也是非常重要的。
Views
View主要用于呈现数据。由于Controller和相关的Service处理完业务逻辑并将结果打包成了Model实体,所以View只需要负责将Model实体转换为视图呈现出来。更详细的内容我会在后续文章中加以说明。
Web.config
Web.config是一个配置文件,是基于XML的文本文件。
在发布Web应用程序时,Web.config文件并不编译进dll文件中,它主要存储一些ASP.NET应用程序的配置信息,比如上传文件的保存路径可配置在appSettings节点;数据库连接字符可保存在connectionStrings节点;用于定义自定义错误信息的customErrors节点等等…
总结
通过本文可以了解到,如何创建第一个MVC项目、MVC框架的目录结构以及MVC下主要文件的作用。
更多内容可访问我的个人博客:http://www.yunc.top/
ASP.NET MVC5基础 – MVC文件架构的更多相关文章
- ASP.NET MVC5基础-控制器(Controller)详解
在上文ASP.NET MVC5基础 – MVC文件架构中我们简单了解了下控制器Controller的作用,本文我将详细介绍控制器Controller的使用方法. Controller的运行过程 上文我 ...
- 用ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统
用http://ASP.NET MVC5 +SQLSERVER2014搭建多层架构的数据库管理系统 背景:前段时间,给一家公司做外包(就是图标是朵菊花那家).为了尽快实现交付,网上四处寻找适合中小型企 ...
- Angular JS从入门基础 mvc三层架构 常用指令
Angular JS从入门基础 mvc模型 常用指令 ★ 最近一直在复习AngularJS,它是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心 ...
- ASP.NET MVC5基础-过滤器(Filters)详解
什么是过滤器? 过滤器的类型与作用 定义过滤器 授权过滤器 动作过滤器 结果过滤器 异常处理过滤器 过滤器的使用方法 总结 什么是过滤器? 通过上一篇关于Controller控制器的文章我们知道,MV ...
- ASP.NET MVC5基础 - Global.asax详解
简介 作用 Global.asax的处理事件 实例说明 总结 简介 Global.asax是一个文本文件,它提供全局可用代码.这些代码包括应用程序的事件处理程序以及会话事件.方法和静态变量.有时该文件 ...
- [Asp.net MVC]Asp.net MVC5系列——第一个项目
目录 概述 创建第一个项目 添加控制器 总结 概述 本教程是个人一步一步学习的总结,希望能帮到正在进入ASP.Net MVC5方向的朋友,个人也是准备进入ASP.NET MVC5领域,虽然艰辛,但是乐 ...
- Asp.net mvc项目架构分享系列之架构概览
Asp.net mvc项目架构分享系列之架构概览 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构 ...
- [Asp.net MVC]Asp.net MVC5系列——布局视图
目录 系列文章 概述 布局视图 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net M ...
- 《ASP.NET MVC 5 破境之道》:第一境 ASP.Net MVC5项目初探 — 第三节:View层简单改造
第一境 ASP.Net MVC5项目初探 — 第三节:View层简单改造 MVC默认模板的视觉设计从MVC1到MVC3都没有改变,比较陈旧了:在MVC4中做了升级,好看些,在不同的分辨率下,也能工作得 ...
随机推荐
- java设计模式(一)动态代理模式,JDK与CGLIB分析
-本想着这个知识点放到Spring Aop说说可能更合适一点,但因为上一篇有所提到就简单分析下,不足之处请多多评论留言,相互学习,有所提高才是关键! 什么是代理模式: 记得有本24种设计模式的书讲到代 ...
- 【搞定Jvm面试】 面试官:谈谈 JVM 类加载过程是怎样的?
类加载过程 Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢? 系统加载 Class 类型的文件主要三步:加载->连接->初始化.连接过程 ...
- numpy的基本API(四)——拼接、拆分、添加、删除
numpy的基本拼接.拆分.添加.删除API iwehdio的博客园:https://www.cnblogs.com/iwehdio/ 1.np.concatenate((a, b), axis=0) ...
- Python 中国象棋源码 V1
Pygame 做的中国象棋,一直以来喜欢下象棋,写了 python 就拿来做一个试试,水平有限,电脑走法水平低,需要在下次版本中更新电脑走法,希望源码能帮助大家更好的学习 python.总共分为四个文 ...
- Jenkins之自动部署、代码安全扫描、自动化接口测试
搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...
- Docker安全扫描工具之docker-bench-security
简介 Docker Bench for Security检查关于在生产环境中部署Docker容器的几十个常见最佳实践.这些测试都是自动化的,其灵感来自CIS Docker基准1.2.0版. 这种安全扫 ...
- spinand之data buffer
data buffer简介 spinand一般会有一个内置的data buffer. 以W25N01GV为例,一个page是2048bytes外加64bytes的spare数据,其data buffe ...
- SoapUI 之 webService 接口测试 [5]
一.webservice接口实例说明 学习的话,大家可以自行到网上找 一些免费的webservice接口来练手.本文中选择实例为:中国电视节目预告(电视节目表) WEB 服务. Endpoint : ...
- 计算几何 val.1
目录 计算几何 val.1 向量的点积 向量的叉积 一种奇怪的三角剖分求面积 凸包 点绕点旋转 后记 计算几何 val.1 本文并不是入门文章,供有高中数学基础的阅读 主要写一些重要的点和注意事项吧 ...
- leaflet-webpack 入门开发系列四图层控件样式优化篇(附源码下载)
前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...