深度解析 ASP.NET MVC 5
- ASP.NET MVC基础
- IoC容器
- ASP.NET MVC可扩展性
- ASP.NET MVC Filters & Cache
- ASP.NET MVC AJAX
- ASP.NET MVC Client Validation
- 资源文件目录结构
- Model目录结构
- View目录结构
- View分解原则
- 关于Web.config
1. ASP.NET MVC基础
1.1. 一次请求的生命周期

- 一次请求从客户端/浏览器开始,客户端将请求发送给IIS,IIS启动ASP.NET MVC对应的应用程序。
- 在ASP.NET MVC内部,通过路由(Routing)开始匹配的路由规则。
- 在执行Action之前,首先会执行 Action 对应的 Filter,如 [Authorize]
- 然后执行 Action,这里便是执行我们的业务逻辑。
- 如果有视图/页面,View Engine返回相应的HTML。
- 在Action执行完成后,两样可以执行Filter来处理相应逻辑。
1.2. Application 启动

- MvcApplication继承自 HttpApplication 类,ASP.NET MVC启动后,首先执行的就是这个类。
- 最先进入的是 Application_Start 方法,在这个方法里,可以初始化基本的应用/类库。
- 另一种初始化方式如上图中的下方的代码截图,以特性的方式初始化应用/类库。
1.3. Routing 两种形式

在ASP.NET MVC 5中,定义Route有两种形式:
- 在 Application_Start 中定义 Route, 如上图中上方截图。
- 在 Controller/Action 中以 Attribute 方式直接定义 Route,如上图中下方截图。
1.4. Filters (ActionFilterAttribute)

- 前面我们提到过,在执行Action之前和之后,可以执行一些Filter处理一些事情,如 [Authorize],就是在执行 Action 之前,判断必须有账号登录。
- 我们也可以自定义一些Filter来处理我们自己的事情,如角色权限判断,上图中左侧截图即是一个自定义的 Filter。
1.5. Controller & Action

- Controller是所有Controller的基类,所有Controller必须继承自Controller类。
- Controller类可以使用 Filter,表示此类下的所有Action都应用这个 Fitler。
- Action可以应用 GET, POST, PUT 和 DELETE 等方法。
- Action返回的结果可以是 View, PartialView, Redirect, Json, JavaScript, Content 和 File 等类型。
1.6. View / View Engine

- View Engine可以被重写和定义,这里使用的 Razor View Engine。
- 使用 View() 和 PartialView() 返回视图/HTML。
- 查找视图时,如果未指定路径,默认查找无则是 Views/{controller name}/{action name}.cshtml,如果没有则查找 Views/Shared/{action name}.cshtml。
- Shared/_Layout.cshtml是View的默认框架模板,也可以View中单独指定。
2. IoC容器
2.1. 什么是IoC容器?

2.2. Unity

3. ASP.NET MVC可扩展性
3.1. Controller 扩展性

3.2. Model 扩展性

3.3. View Engine


4. ASP.NET MVC Filters & Cache

5. ASP.NET MVC AJAX

6. ASP.NET MVC Client Validation


7. 资源文件目录结构



8. Model目录结构

9. View目录结构


10. View分解原则


11. 关于Web.config


深度解析 ASP.NET MVC 5的更多相关文章
- 解析ASP.NET Mvc开发之EF延迟加载
目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 3)解析ASP.NET Mvc开发之查询数据实例 ------------------------ ...
- 解析ASP.NET Mvc开发之删除修改数据
目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 3)解析ASP.NET Mvc开发之查询数据实例 4)解析ASP.NET Mvc开发之EF延迟加载 ...
- 解析ASP.NET Mvc开发之删除修改数据 分类: ASP.NET 2014-01-04 23:41 3203人阅读 评论(2) 收藏
目录: 从明源动力到创新工场这一路走来 解析ASP.NET WebForm和Mvc开发的区别 解析ASP.NET 和Mvc开发之查询数据实例 解析ASP.NET Mvc开发之EF延迟加载 ------ ...
- Spring源码深度解析之Spring MVC
Spring源码深度解析之Spring MVC Spring框架提供了构建Web应用程序的全功能MVC模块.通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术,例如JavaServer ...
- 解析ASP.NET Mvc开发之查询数据实例
目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 ------------------------------------------------- ...
- 解析ASP.NET Mvc开发之EF延迟加载 分类: ASP.NET 2014-01-04 01:29 4017人阅读 评论(1) 收藏
目录: 从明源动力到创新工场这一路走来 解析ASP.NET WebForm和Mvc开发的区别 解析ASP.NET 和Mvc开发之查询数据实例 ----------------------------- ...
- 解析ASP.NET Mvc开发之查询数据实例 分类: ASP.NET 2014-01-02 01:27 5788人阅读 评论(3) 收藏
目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 ----------------------------------------------- ...
- 全面解析ASP.NET MVC模块化架构方案
什么叫架构?揭开架构神秘的面纱,无非就是:分层+模块化.任意复杂的架构,你也会发现架构师也就做了这两件事. 本文将会全面的介绍我们团队在模块化设计方面取得的经验.之所以加了“全面”二字,是因为本文的内 ...
- Spring源码深度解析之数据库连接JDBC
Spring源码深度解析之数据库连接JDBC JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...
随机推荐
- HTML5深入学习之鼠标跟随,拖拽事件
知识点(鼠标跟随): mousedown: 当用户用鼠标点击在某一元素上就会触发该事件 mouseover: 当鼠标指针在某一元素上移动就会触发改事件 下面这个例子的效果就是鼠标点击元素后,元素跟着 ...
- 聊聊webpack 4
前言 hello,小伙伴们,本篇仓库出至于我的GitHub仓库 web-study ,如果你觉得对你有帮助的话欢迎star,你们的点赞是我持续更新的动力 web-study webpack 打包工具 ...
- 【Axure】原型设计工具的概览与初识
软件工程综合实践第三次个人作业 作业要求:通过搜索资料和自学,了解原型设计的工具 前言: Axure是一款强大的原型设计工具,具有比较大的用户基础,在此前提下沟通.传输.修改就显得十分方便,并且在细节 ...
- PHP开发环境WAMP(Windows+Apache+MySQL+PHP)搭建
关于PHP开发环境这一块,网上有很多的集成环境可以使用,eg. WampServer,XAMPP,PhpStudy,Appserv ...用起来也很方便(但是我并没有比较过哪个更好用一点),但是呢,比 ...
- golang之类型零值初始化及比较
综述 变量声明时未赋初值,则变量被自动赋值为该类型的零值(固定值) func new(Type) *Type new()返回一个指针,指向新分配的该类型的零值,不是空指针(nil).the value ...
- linux设备驱动程序--bus
linux 中bus驱动解析 总线(bus)是linux发展过程中抽象出来的一种设备模型,为了统一管理所有的设备,内核中每个设备都会被挂载在总线上,这个bus可以是对应硬件的bus(i2c bus.s ...
- Socket网络编程-UDP编程
Socket网络编程-UDP编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.UDP编程概述 1>.UDP服务端编程流程 创建socket对象.socket.SOCK_ ...
- (一)Kubernetes 系统基础
Kubernetes介绍 什么是Kubernetes? Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署.自动扩缩容.维护等功能. 使用Kubernetes可以: ...
- 使用idea创建项目如何忽略iml文件
在图中圈出的输入栏中输入“*.iml;”,点下OK就可以了,如图进入idea项目窗口,如图 点下file,进入file菜单窗口,如图 点下settings,进入到settings窗口,如图 在输入框f ...
- 利用Java反射机制优化简单工厂设计模式
之前项目有个需求,审批流程的时候要根据配置发送信息:发送短信.发送邮件.当时看到这个就想到要用工厂模式,为什么要用工厂模式呢?用工厂模式进行大型项目的开发,可以很好的进行项目并行开发.就是一个程序员和 ...