深度解析 ASP.NET MVC 5

分享公司内部培训资料,如有错误,请批评指正。

  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

 

 

posted @ 2017-03-24 17:04 薛.net 阅读(8915) 评论(2) 推荐(4)
摘要: 这一节我们创建一个模板页—Article Page,我们先看看这个页都包含哪些内容,如图1所示。 图1 从图中我们可以看出,Article包括Title、Published Date、User name、Text等四个属性和一个Edit action,Comment将在下一节介绍,这一节我们先学习如何完成Article内容部分,先在Items/Pages文件下创建一个ArticlePa... 阅读全文
posted @ 2009-08-12 22:01 薛.net 阅读(3348) 评论(2) 推荐(1)
摘要: 从本节开始,我们就要建立我们自己的网站了,这一节,我们先创建母版页。 还记得前言中我们提到的HTML模板吗,现在它有用处了,我们要用Index.html里的内容作为母版页的内容,我们把母版页分为几个部分,分别是top,left,content,footer几个部分,如图所示。 Top Left Content FooterTop 每个页的页头部分,这里是固定的样式。Left 页的左列部分,为了显示... 阅读全文
posted @ 2009-08-04 23:08 薛.net 阅读(3208) 评论(3) 推荐(2)
摘要: 这一节我们先讲讲N2CMS的优点,必须说明一下,本人对web开发很少,其中的优点都是我个人的观点。支持多种数据库 这个前面已经提到过了,N2框架使用NHibernate与数据库通信,所以只要NHibernate支持的数据库,N2都支持。支持多语言 这个在N2.Templates.MVC中已经看到了,这里我没有研究,就不多说了。模板页区域灵活配置 不仅可以配置模板页的属性,还可以配置模板页的区域,如... 阅读全文
posted @ 2009-08-03 23:39 薛.net 阅读(4643) 评论(6) 推荐(3)
摘要:     在《N2CMS实例教程--开发环境》一节中我们介绍了如何安装N2CMS,在那里我提供的N2CMS源码下载地址为http://n2cms.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29374,在这里向读者说声对不起,因为这个地址中并不是最新的源码,最新的源码的Google Code上,地址为http:... 阅读全文
posted @ 2009-07-31 18:36 薛.net 阅读(523) 评论(0) 推荐(0)
摘要: 从现在开始,我们就一起学习如何使用N2CMS创建网站。 “工欲善其事,必先利其器”,要想快速开发,那就得先有一个好的开发环境。 你必须要安装Visual Studio 2008+SP1,这个是必须的,然后安装ASP.MVC 1.0,下载地址http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73... 阅读全文
posted @ 2009-07-31 11:46 薛.net 阅读(4705) 评论(15) 推荐(8)
摘要: N2CMS实例教程以一个网站项目实例为背景,一步一步的学习如何使用N2CMS框架来构建一个新闻评论性的网站,页面显示效果如图1所示。 图 1 教程将围绕如何创建新闻、添加评论,分类显示,按日期显示等页面,说明N2CMS的工作原理和开发流程,尽量用简单易懂,详细步骤的方式来书写本教程,希望对需要了解N2CMS的朋友有所帮助。 网站HTML文件下载 ps:HTML及CSS源于网络,我只是做了简单的修... 阅读全文
posted @ 2009-07-30 13:47 薛.net 阅读(4000) 评论(5) 推荐(2)
摘要: 最近公司要做一个关于智能客户端的项目,在网上也找了一些解决方案,发现了微软的Microsoft Sync Framework同步框架,它即可以解决数据同步,也可以解决文件同步等问题,本人通过学习一些例子终于实现一个文件两步的例子,现在与大家一起分享,我用的是Microsoft Sync Framework RTM 1.0版。 新建项目,然后引用Microsoft.Synchro... 阅读全文
posted @ 2008-09-16 16:27 薛.net 阅读(1172) 评论(1) 推荐(0)
摘要: 最近做项目时遇到这样一个问题,要用PropertyGrid控件显示object对象的部分属性,其它属性不显示,这种情况该如何处理呢,能过查找资料,发现这样一个接口ICustomTypeDescriptor,PropertyGrid控件通过ICustomTypeDescriptor接口获取显示的属性及其内容,这样一来就可以通过这个接口的GetProperties方法返回我们要显示的属性内容了,这... 阅读全文
posted @ 2008-08-22 09:42 薛.net 阅读(4777) 评论(3) 推荐(0)
摘要: 2008年8月8日 2008年8月9日 2008年8月10日 2008年8月11日 2008年8月12日 2008年8月13日 2008年8月14日 2008年8月15日 2008年8月16日 2008年8月17日 2008年8月18日 2008年8月19日 2008年8月20日 2008年8月21日 2008年8月22日 2008年8月23日 2008年8月2... 阅读全文
posted @ 2008-08-12 20:17 薛.net 阅读(254) 评论(1) 推荐(0)
点击右上角即可分享
微信分享提示