一、概述

1、MVC是一种流行的Web应用架构技术,他把Web应用划分成Model(模型)、Controller(控制器)和View(视图)三部分。

2、优点:可测试、可维护

3、MVC是ASP.NET技术的子级(ASP.NET MVC),ASP.NET包括:ASP.NET WebForm和ASP.NET MVC。

二、MVC简介

1、MVC是什么

MVC是一种软件架构设计模式,针对具备人机交互功能的软件和程序。

2、执行顺序

控制器接收网页发送的请求,如果需要请求数据,先从Model里面取出数据,然后再交给View展示。

3、Web开发的本质

Web开发的本质流程:请求->处理->响应,WebForm方式不贴近web开发的本质。

三、创建ASP.NET MVC步骤

1、创建ASP.NET MVC项目。

文件->新建->项目->Web项目,根据需要选择相应版本的ASP.NET MVC应用程序,点击“确定”:

2、在项目模板选择界面,选择相应的模板和视图引擎,点击确定,新建一个ASP.NET MVC应用程序:

3、创建Controller控制器。

本示例以VS2012为开发工具,创建的MVC4应用程序,需要创建控制器才可以运行(VS2013或以上版本已经默认创建了控制器,直接就可以运行)。

在Controllers文件夹上面点击右键->添加->控制器:

输入控制器的名称(控制器的名称约定以Controller结尾),选择模板,点击添加:

4、创建视图。

在控制器代码界面,在方法名称上面点击右键:选择“添加视图”:

在添加视图选项卡界面,输入视图名称,视图名称必须和方法的名称保持一致,选择视图引擎,点添加:

在Views文件夹里面会看到新添加的视图:

四、ASP.NET MVC项目结构

新创建的MVC应用程序结构如图所示:

1、Content文件夹

存放资源文件,例如Css文件、第三方插件等。

2、Controllers文件夹

存放MVC应用程序相关的控制器文件。

3、Models文件夹

存放除了Controller和View以外的文件。

注意:与三层结构的Models不同,MVC里的Models里面可以放实体类、数据访问类和业务类等。

4、Scripts文件夹

存放各种脚本文件。

5、Views文件夹

存放View文件。

6、Shared文件夹

Shared文件夹位于Views文件夹里面,任何控制器中找不到的视图都会去Shared文件夹下面找。

7、Web.Config

存放配置信息。

8、Global.asax

Global.asax存放应用程序启动时要执行的代码。

五、代码详解

1、Global.asax—应用程序启动注册路由

当对网站发出请求时,应用程序是如何把请求引到对应的控制器及里面的Action方法
答:首先网站一启动,会提前加载根据控制器和Action方法设置的路由规则,这样一请求,路由就会分析之后把请求引到对应的控制器和Action方法。

RouteConfig类位于App_Start文件夹下面。

2、控制器

1)根据前面的解析,每次请求都是先定位控制器,然后再根据路由规则找到对应的Action方法!
2)但是在路由表里,我们只写了Home,但是MVC框架约定,控制器都是以Controller结尾,并继承了基类Controller!
3)在这里Index方法返回值类型是ActionResult,方法名和路由注册的方法名一致,在Index方法内,调用了View方法并且返回,这是一个重载的方法,可以给个参数,作为返回视图的名称,如果没有参数,默认就是以当前Action命名的视图。
4)也就是Asp.netMVC架构,不像Java的MVC通过配置来建立关系,他是约定大于配置。

3、视图

1)视图里的代码类似于之前的ASPX里面的代码,主要是HTML、JS和CSS等前端技术构成,从MVC1.0到MVC5.0变化很大,Razor语法越来越完善,强大!

4、向视图传递数据

1)传统的WebForm方式,前置页面类和后置代码类是继承的关系,可以直接进行数据传递。
2)MVC模式下,视图和控制器是完全分离的,通过专用渠道传递数据,ViewData是在控制器和视图之间传递数据的容器之一。

5、ASP.NET MVC执行顺序

六、Model和三层架构

1、MVC与三层架构之间有没有区别?
   1)MVC和三层架构没有必然的关系,架构的思想是不一样的。
   2)三层架构强调的是物理分离(多个项目构成),MVC强调的是逻辑分离(一个项目构成)。
   3)MVC中也可以体现三层架构。

4)有些MVC企业框架为了方便管理,会故意把Models做分层设计。

注意:在MVC中如果它不属于View也不属于Controller,那么就把它归到Model中。

七、MVC和ASP.NET

1、ASP.NET MVC和ASP.NET

(1)ASP.NET MVC是ASP.NET技术的子集。
(2)ASP.NET MVC是在核心ASP.NET基础之上构建
   1.依赖于HttpHandler,如请求是如何进入控制器的
   2.依赖于Session、Cookie、Cache、Applaction等状态保持机制
   3.使用HttpContext、Request、Response、Server等对象
   4.在Controller使用智能感知很容易得到这些对象
(3)ASP.NET MVC是.NET中编写WEB程序的一种可选方式
   1.WebForms技术是另外一种可选方式

2、MVC和WebForms

(1)WebForms的特色
  1)所见即所得,开发傻瓜化
    1.服务器端控件
    2.事件模型
    3.状态管理
  2)借鉴Winforms的成功特色
  3)偏离了Web请求处理的原理
(2)Asp.net MVC的特色
  1)关注分离
    1.WebForm只是把一个页面分成了前置页面和后置代码,不够彻底
    2.MVC可以把一个页分成三块,分得更彻底
  2)可测试性
  3)开发更接近WEB的本质
 
4)对开发人员的技术水平要求更高

MVC教程一:MVC简介的更多相关文章

  1. ASP.NET MVC教程一:ASP.NET MVC简介

    一.MVC模式简介 MVC模式是一种流行的Web应用架构技术,它被命名为模型-视图-控制器(Model-View-Controller).在分离应用程序内部的关注点方面,MVC是一种强大而简洁的方式, ...

  2. 【学习总结】Git学习-参考廖雪峰老师教程一-Git简介

    学习总结之Git学习-总 目录: 一.Git简介 二.安装Git 三.创建版本库 四.时光机穿梭 五.远程仓库 六.分支管理 七.标签管理 八.使用GitHub 九.使用码云 十.自定义Git 期末总 ...

  3. WebSockets Tutorial(教程一)WebSockets简介

    一.WebSockets简介 以字面意思来说,握手可以被定义为两个人抓住和握手右手,象征着问候,祝贺,同意或告别.在计算机科学中,握手是确保服务器与客户端同步的过程.握手是Web Socket协议的基 ...

  4. Java入门教程一(Java简介)

    什么是Java语言 Java 是由 Sun Microsystems 公司于 1995 年推出的一门面向对象程序设计语言.2010 年 Oracle 公司收购 Sun Microsystems,之后由 ...

  5. Cobalt Strike使用教程一

    Cobalt Strike使用教程一     0x00 简介 Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器.自3.0以后已经不在使用Metasploit框架而作为 ...

  6. Django框架(一):MVC设计模式、Django简介

    1. MVC设计模式 MVC设计模式:Model-View-Controller简写. 最早由TrygveReenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪8 ...

  7. [ExtJS5学习笔记]第九节 Extjs5的mvc与mvvm框架结构简介

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38537431 本文作者:sushengmiyan ------------------ ...

  8. [.net 面向对象程序设计深入](4)MVC 6 —— 谈谈MVC的版本变迁及新版本6.0发展方向

    [.net 面向对象程序设计深入](4)MVC 6 ——谈谈MVC的版本变迁及新版本6.0发展方向 1.关于MVC 在本篇中不再详细介绍MVC的基础概念,这些东西百度要比我写的全面多了,MVC从1.0 ...

  9. CRL快速开发框架系列教程一(Code First数据表不需再关心)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

随机推荐

  1. HttpClient 解释

    HttpClient:是一个接口 首先需要先创建一个DefaultHttpClient的实例 HttpClient httpClient=new DefaultHttpClient(); 发送GET请 ...

  2. python练习笔记——完全数(1000以内的)

    完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数.它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身.如果一个数恰好等于它的因子之和,则称该数为“完 ...

  3. Android 在已有的项目上创建新的项目

    原工程 右键Copy   再右键点Paste 改新的工程名

  4. 图像的线性空间滤波matlab实现

    1.线性空间滤波函数Z = imfilter(X,H,option1,option2,...) X为输入图像矩阵,H为m*n维的掩膜矩阵,H中的数据类型必须是double类型.掩膜矩阵可以是用户定义, ...

  5. centos7 启动httpd的时候为什么显示是这样的

    我输入 service httpd start显示一下内容:Redirecting to /bin/systemctl start httpd.service -------------------- ...

  6. Eclipse中导入Git项目

    1.先将项目git到本地 2.导入刚刚git到本地项目 if(如果project带.calsspath .project 文件){ 直接用genaral导入或andorid project导入即可. ...

  7. Oracle学习笔记之七(用户管理、角色与权限、导入导出等)

    下面这些基本的SQL语句应该熟悉,能够灵活运用.最好在不查资料的情况下,能够写出如下的任何代码. 1. 用户操作 --create user username identified by passwo ...

  8. js左侧三级菜单导航实例代码

    在左侧三级菜单导航想必大家都见到过吧,它的实现过程也并不复杂,下面有个不错的示例,感兴趣的朋友可以了解下 实例代码:   <!DOCTYPE html PUBLIC "-//W3C// ...

  9. [sh]函数+条件表达式

    了解了下shell的函数和case语句: 函数格式: function(){ } 例子: function rsyncstart() { if [ "${status1}X" == ...

  10. Xcode真机调试报错:The application could not be verified.

    今天真机调试的时候遇到这个错误: The application could not be verified. 这还是第一次遇到,应该是手机上的app的证书跟如今的证书不一致导致. 解决方法有两个 x ...