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

最新文章

  1. My first blog in cnblog
  2. ApexSQLLog总结
  3. ListView优化-通用ViewHolder编写备份
  4. yii2.0框架安装心得
  5. Android中使用ShareSDK实现分享
  6. Java_类和对象(完美总结)_转载_覆盖和隐藏的区别,覆盖就不能使用了,而隐藏提供全局方法名或者全局变量名还可以使用
  7. 参数TFilterPredicate 类型说明
  8. haslayout引起的IE6 :hover失效
  9. mysql常用操作命令
  10. C# 读取二进制文件
  11. Myeclipse8.5开发-安装一:Myeclipse8.5注册码生成程序
  12. [Swift]LeetCode674. 最长连续递增序列 | Longest Continuous Increasing Subsequence
  13. <c:forEach varStatus="status">中 varStatus的属性简介
  14. C# 读取txt文件内容
  15. Understanding Safari Reader
  16. 常见企业IT支撑【6、跳板机Jumpserver】
  17. ubuntu 常见配置文件
  18. 最近JavaScript的一些收获
  19. npm 安装私有 git 包
  20. [拾零]C语言的数组指针

热门文章

  1. HTML 图像标签(img)
  2. Es查询工具使用
  3. TP5给request对象动态绑定属性
  4. echarts曲线 将不连续的点连接起来、由null间断的点连接起来
  5. 【Python】生成器
  6. 你遇到过哪些原因造成MySQL异步复制延迟?
  7. Odoo销售模块
  8. 记python 使用腾讯ocr 识别代码报错 CERTIFICATE_VERIFY_FAILED
  9. pandas用法总结
  10. Appium中wait_activity的使用以及XPATH定位