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. LINUX增加并管理用户

    使用groupadd命令增加新的用户组 使用useradd命令增加新用户: useradd -s /bin/bash -d /home/XXX -g group username 使用passwd修改 ...

  2. 从前有个聊天室(socket&threading)

    服务器端: # -*- coding: utf-8 -*- import socket, threading con = threading.Condition() HOST = raw_input( ...

  3. C++ Primer 5th 第6章 函数

    正如第一章所说:C++的函数是一个能够完成一个功能的模块或者说是一段命名了的代码块. 如下图所示,函数可以重载,是一段实现某些功能命名了的代码. 一个完整的函数的构成有四部分: 1.返回类型 2.函数 ...

  4. 17--Box2D使用(三、触摸交互)

    Box2D引擎与触摸的交互通过创建鼠标关节以及碰撞检测来得到触摸点下面的刚体,在根据触摸操作完成相应的功能.首先添加触摸响应函数声明 virtual void ccTouchesBegan(cocos ...

  5. xml2js

    实际做项目的时候会有很多的XML配置文件,有些XML多达上千行,比如物品,武将的配置,一般的手游项目是直接解析XML文件,这就引发2个问题. 1.XML是明文,代码中解析必要要做加密. 2.有些配置过 ...

  6. PHP打开PDO_MySQL扩展的配置方法

    PHP中的PDO其实是一个很好用的扩展,在一些PHPCMS系统中,开发者大多都有用到,那么如何开启PDO和PDO_MySQL扩展呢?方法同样很简单: 打开php.ini配置文件,找到extension ...

  7. UCOS 内存管理理解 创建任务

    OS_MEM   *OSMemCreate (void *addr, INT32U nblks, INT32U blksize, INT8U *err)   { ................... ...

  8. m2eclipse插件安装

    一.给Eclipse安装maven的插件 m2eclipse 1 打开eclipse 2 Help -->Eclipse MarketPlace,在打开的界面搜索框中输入maven查找m2ecl ...

  9. (转)Linux监控工具

    需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧. 大多数Linux发行版本都装备了大量的监控工具,这些工具提供了能用作取得相关信息和系统活动的量度指标. 你能使用这些工具发现造 ...

  10. JVM试用G1的垃圾收集器

    因为以前用默认的GC,,老年代经常在占比超过99%才发生一个GC行为,感觉不爽...尽管每次FULL GC只要0.5S. 结合上次听中华构架师大会,一哥们分享的G1 GC...试试.. 就在TOMCA ...