1. ASP.NET MVC基础
  2. IoC容器
  3. ASP.NET MVC可扩展性
  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

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的更多相关文章

  1. 解析ASP.NET Mvc开发之EF延迟加载

    目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 3)解析ASP.NET Mvc开发之查询数据实例 ------------------------ ...

  2. 解析ASP.NET Mvc开发之删除修改数据

    目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 3)解析ASP.NET Mvc开发之查询数据实例 4)解析ASP.NET Mvc开发之EF延迟加载 ...

  3. 解析ASP.NET Mvc开发之删除修改数据 分类: ASP.NET 2014-01-04 23:41 3203人阅读 评论(2) 收藏

    目录: 从明源动力到创新工场这一路走来 解析ASP.NET WebForm和Mvc开发的区别 解析ASP.NET 和Mvc开发之查询数据实例 解析ASP.NET Mvc开发之EF延迟加载 ------ ...

  4. Spring源码深度解析之Spring MVC

    Spring源码深度解析之Spring MVC Spring框架提供了构建Web应用程序的全功能MVC模块.通过策略接口,Spring框架是高度可配置的,而且支持多种视图技术,例如JavaServer ...

  5. 解析ASP.NET Mvc开发之查询数据实例

    目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 ------------------------------------------------- ...

  6. 解析ASP.NET Mvc开发之EF延迟加载 分类: ASP.NET 2014-01-04 01:29 4017人阅读 评论(1) 收藏

    目录: 从明源动力到创新工场这一路走来 解析ASP.NET WebForm和Mvc开发的区别 解析ASP.NET 和Mvc开发之查询数据实例 ----------------------------- ...

  7. 解析ASP.NET Mvc开发之查询数据实例 分类: ASP.NET 2014-01-02 01:27 5788人阅读 评论(3) 收藏

    目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 ----------------------------------------------- ...

  8. 全面解析ASP.NET MVC模块化架构方案

    什么叫架构?揭开架构神秘的面纱,无非就是:分层+模块化.任意复杂的架构,你也会发现架构师也就做了这两件事. 本文将会全面的介绍我们团队在模块化设计方面取得的经验.之所以加了“全面”二字,是因为本文的内 ...

  9. Spring源码深度解析之数据库连接JDBC

    Spring源码深度解析之数据库连接JDBC JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...

随机推荐

  1. 编写可维护的JavaScript-随笔(四)

    避免使用全局变量 一.全局变量带来的问题 a)      命名冲突 i.          当全局变量和全局函数越来越多时,发生命名冲突的概率也随之增高 ii.          如果函数中使用了外部 ...

  2. SQLI-LABS LESS 1-LESS 22

    SQLI-LABS LESS 1-LESS 22 0x01:前言 因为最近感觉手注快忘光了,所以玩一遍sqli-labs巩固一下. sql注入,基于从服务器接收到的响应分类为 : ▲基于错误的SQL注 ...

  3. FastJson实现复杂对象序列化与反序列化

    原文:http://blog.csdn.net/xqhadoop/article/details/62217954 一.认识FastJson 1.优势 fastjson是目前java语言中最快的jso ...

  4. 程序员式优雅表白,教你用python代码画爱心

    还能用python代码画爱心?还有这种操作?这是什么原理? 不相信python代码可以画爱心?先来一张效果图来看看效果吧! 用python代码画爱心的思路是怎样的? 1.怎么画心形曲线 2.怎么填满心 ...

  5. Mac Docker安装Redis4.0

    mkdir redis 在~目录下创建redis目录 docker run -d -p 6379:6379 -v $PWD/redis:/data -d --name redis4.0 redis:4 ...

  6. Java并发编程-JUC-CountDownLatch 倒计数门闩器-等待多线程完成再放行 -一次性使用

    如题 (总结要点) CountDownLatch 倒计数门闩器, 让1-n-1个线程等待其他多线程完成工作. (Excel的多个Sheet的解析,最终等待解析完毕后;要实现主线程等待所有线程完成she ...

  7. 201671010446姚良实验十四团队项目评审&课程总结

    实验十四 团队项目评审&课程学习总结 项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cn ...

  8. Beta冲刺博客汇总(校园帮-追光的人)

    所属课程 软件工程1916 作业要求 Beta冲刺博客汇总 团队名称 追光的人 作业目标 汇总Beta阶段的博客,方便查看 冲刺日志 Beta之前-凡事预则立(校园帮-追光的人)5-22 Beta冲刺 ...

  9. 使用 application.properties 中配置的属性,举例:@Value("${server.port}")

    使用 application.properties 中配置的属性:@Value 注解. @RestController public class HelloWorldController { @Val ...

  10. centos7离线部署Patroni

    实验环境Centos7.7.1908 x86_64 这里说明下为什么需要安装gcc readline-devel zlib-devel这三个包,因为编译安装postgres需要用到 一.首先安装gcc ...