1.1概念

MVC是一种软件设计模式,即:Model(模型)、View(视图)、Controller(控制器)  。其主要设计目标是将用户接口和逻辑层相分离,以便开发人员更好的关注逻辑层的设计和测试,并是整个程序具备清晰的的结构。ASP.Net MVC 框架是MVC设计模式的实现方式之一。ASP.Net MVC 框架有三大组成部分:Model:模型是实现应用程序的数据逻辑的应用程序组件,通常被称为“数据模型”。模型对象会检索模型状态。并将其存储在数据库中。View:视图是显示应用程序用户界面(UI)的组件。ASP.Net MVC 支持Razor视图引擎,所以视图推荐使用CSHTML页面,而不是ASPX。Controller:控制器是处理用户交互,使用模型并选择视图来显示界面的组件。在MVC应用程序中,视图仅显示界面,控制器则用于处理和响应用户输入和交流。例如,控制器处理查询字符串值,并将这些值传递给模型,而模型使用这些值来查询数据库,并用View显示结果。

ASP.Net MVC应用程序包括默认文件和目录如下:

/App_Data:数据的物理存储区,即本地化的数据库文件或数据文件。

/App_Start:包含多个静态配置类,执行应用程序的初始化任务。

/Content:放置应用程序的静态内容,如CSS、可下载文件、音乐文件等。

/Images:存放图片目录。

/Controller:放置控制器文件。控制器文件是后缀为.cs或.vb的类文件。

/Model:放置数据模型对象的文件,如.cs、.vb、.edmx、.dbml等。

/Scripts:放置JavaScript、Jquery文件,文件后缀名通常为.js。

/View:放置视图文件,文件后缀名.schtml或.aspx。

/Global.asax:全局应用程序类文件。

/Web.config:应用程序配置文件。

1.2控制器向视图传递数据

控制器向视图传递数据可以使用三种对象:

ViewData:是字典类型,存放键/值对数据。ViewData只在一次HTTP请求中有效,当这次请求结束后,会自动清空其值。

ViewBag:存放dynamic动态类型数据。

TempData:默认保存在Session中,控制器每次从Session中获取TempData,然后清除Session。在每次请求结束后,TempData结束什么周期。

针对这一些知识在面试的时候别人可能会问以下问题:

1、MVC和三层架构的区别?

“三层架构”是一种软件抽象的层次结构,是对复杂软件的一种纵向切分。每一层完成同一类型的操作,以便将各种代码以它完成的“使命”作为依据来分割,降低软件的复杂度,提高可为维护性。同时各层有向下的依赖关系,表现层依赖业务逻辑层,业务逻辑层依赖数据访问层。

MVC模式是一种复合设计模式,其组成部分之间不存在明显的层次结构,没有明显的向下的依赖关系。相反,View和Model相对比较独立,而Controller是链接两者的桥梁。相对而言,MVC是横向切分。内容上更复杂,结构更清晰、耦合性更低,每个部分可以独立测试。需要注意的是,“三层架构”中的Model层由实体类构成,与MVC的MOdel由业务逻辑和数据访问组成。

2、简述ViewData、ViewBag和TempData的区别。

ViewData仅在当前控制器的操作方法中有效,其生命周期和视图相同。ViewBag是dynamic动态类型,它在程序运行时动态解析,读取数据无需转换类型。TempData数据默认保存在Session中,最多只能经过一次Controller传递,且每个元素最多只能被访问一次,访问后自动删除。

ASP.Net MVC概念及基本的更多相关文章

  1. ASP.NET MVC 5 02 - ASP.NET MVC 1-5 各版本特点

    参考书籍:<ASP.NET MVC 4 高级编程>.<ASP.NET MVC 5 高级编程>.<C#高级编程(第8版)>.<使用ASP.NET MVC开发企业 ...

  2. 【AaronYang第一讲】ASP.NET MVC企业开发的基本环境[资源服务器概念]

    学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang  茗洋  EasyUI1.3.4   ASP.NET MVC 3 本篇博客地址:http://ww ...

  3. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

  5. ASP.NET MVC 视图(五)

    ASP.NET MVC 视图(五) 前言 上篇讲解了视图中的分段概念.和分部视图的使用,本篇将会对Razor的基础语法简洁的说明一下,前面的很多篇幅中都有涉及到视图的调用,其中用了很多视图辅助器,也就 ...

  6. ASP.NET MVC 视图(四)

    ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到, ...

  7. ASP.NET MVC Model元数据(一)

    ASP.NET MVC Model元数据(一) 前言 在我初学的时候对Model元数据的概念很模糊,或者说是在大脑中没有它的一个模型,作为小白的我去看网上的一些文章还是两眼一黑啥都看不明白,然后我想退 ...

  8. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总

    MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...

  9. ASP.NET MVC企业级实战目录

    电子书样稿 (关注最新进度,请加QQ群:161436236) ASP.NET MVC企业实战第1章 MVC开发前奏.pdf ASP.NET MVC企业实战第10章 站内搜索.pdf 已经好长一段时间没 ...

随机推荐

  1. 【回顾整理】暴走的SQL语句练习!!!

    设计一个学生成绩数据库,该库包含学生,老师,课程和成绩等信息并完成后面的练习.学生:学号(SNO).姓名(SNAME).性别(SSEX).生日(SBIRTHDAY ).所属班级(SCLASS )课程: ...

  2. 使用Gird++打印出现“Retrieving the COM class factory for component with CLSID”的解决办法

    我们的接口需要返回一个gird++生成PDF文件的二进制数据,在本地测试都很好,发布到服务器上一直出现“Retrieving the COM class factory for component w ...

  3. The type or namespace name 'Script' does not exist in the namespace 'System.Web' (are you missing an assembly reference?)

    应该说是 .net4 的bug,没有所谓的 System.Web.Extensions.dll 库文件,需要将项目的 Target Framework修改为 3.5版本,才能加载System.Web. ...

  4. shell中的eval

    eval语法 eval arg1 arg2 ... eval的作用就是将后面的参数arg1 arg2等等当成一个pipeline,然后重新执行shell处理pipeline的流程(有关pipeline ...

  5. [置顶] chinayaosir近10年来所阅读的世界著名IT书籍-图文并茂

    1.人生观(包括做人原则,心理学,投资,销售) 一个人从来到世上,很多东西都是空白, 阅读一些正能量的书籍,把里面的理论用于生活,不断的应用它, 这些观念就会如同软件一样,不断的升级你的大脑, 合理的 ...

  6. Java系列--第五篇 基于Maven的SSME之Token及Parameterized单元测试

    本来在第四篇要说完的,但是写着写着,我觉得内容有点多起来了,所以就另开这篇,在这里专门讲述Token的定义,JSP自定义标签以及如何用Parameterized的来做单元测试. 1,新建包com.va ...

  7. canvas制作简单动画

    在画布元素<canvas>中,除了绘制图形.图像.文字外,还可以制作一些简单的动画,制作过程十分简单,主要分为两步操作: 1.自定义一个函数,用于图形的移动或其他动作. 2.使用setIn ...

  8. CSS的margin塌陷

    一.两个div并列,上面div的margin-bottom和下面div的margin-top会塌陷,也就说会取上面div的margin-bottom和下面div的margin-top的最大值作为两个并 ...

  9. Linux下*.tar.gz文件解压缩命令 find 命令

    1.压缩命令: 命令格式:tar  -zcvf   压缩文件名.tar.gz   被压缩文件名 可先切换到当前目录下.压缩文件名和被压缩文件名都可加入路径. 2.解压缩命令: 命令格式:tar  -z ...

  10. QT creator中使用opencv采集摄像头信息

    之前在QT creator上成功编译了opencv,由于课题需要,需要采集摄像头的信息.故搜集了网上的一些资料,依葫芦画瓢的照着做了一下,终于简单的成功采集了信息. 打开QTcreator,新建一个w ...