一、概述

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. 由SQL Server的job出错调查引起的思考

            最近一段时间数据库上的一个Job频繁报错,刚开始我们没有抽时间进行彻底的调查.只是处理了下不规范的数据 就没有管了,但是后面我们发现过了几天它又报错了.         今天我进行了彻 ...

  2. OAF_OAF控件系列3 - Poplist的实现(案例)

    2014-06-02 Created By BaoXinjian

  3. Objective-C中的@Property具体解释

    Objective-C中的@Property具体解释 @Property (属性) class vairs 这个属性有nonatomic. strong. weak, retain. copy等等 我 ...

  4. Aixs2 使用总结,持续更新中 ...

    参考博客:http://zhangjunhd.blog.51cto.com/113473/23692     消息交换模式. 目前Axis2支持三种模式:In-Only.Robust-In和In-Ou ...

  5. Eclipse使用git最基本流程(提交远程仓库的方法)

    注册一个github账号 注册完成之后,点击右上角的settings(就是那个齿轮,设置的图标) Step6 Egit的使用 首先,登入你的github账号,点击加号,选择New repositror ...

  6. 同一个界面内取微信的OPENID和调用微信的分享接口

    步骤如下,1:判断URL是否有CODE参数传入,没有则拼接那个微信跳转连接,然后redirect2:有CODE传入,调用微信接口,根据code获取openid和access_token,注意这一步取到 ...

  7. quartusii 使用ModelSim do文件实现仿真(Verilog)

    QuartusII从9.1之后的版本都已经取消了内部自带的仿真器,都需要借助第三方仿真软件比如Modelsim才能实现仿真.一般在进行代码编写的时候,如果结合功能仿真,可以很快的验证代码实现的逻辑是否 ...

  8. 网站的PV UV IP---网站常见软件性能

    IP,衡量不同时间段的上网人数.00:00-24:00内相同的地址被计算一次.例:日300W IP,至少300W人访问PV,衡量页面受欢迎程度.每刷新一次,被记录一次(刷pv),网站被访问的页面的数量 ...

  9. 【Android】9.3 自定义列表视图的外观

    分类:C#.Android.VS2015: 创建日期:2016-02-18 一.简介 自定义的列表视图通常用Resources/Layout文件夹下的axml文件中的资源来声明,适配器则通过Id去加载 ...

  10. 【Android】4.3 屏幕布局和旋转

    分类:C#.Android.VS2015:创建日期:2016-02-06 为了控制屏幕的放置方向(纵向.横向),可以在Resource下同时定义两种不同的布局文件夹:layout和layout-lan ...