ASP.Net MVC概念及基本
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概念及基本的更多相关文章
- ASP.NET MVC 5 02 - ASP.NET MVC 1-5 各版本特点
参考书籍:<ASP.NET MVC 4 高级编程>.<ASP.NET MVC 5 高级编程>.<C#高级编程(第8版)>.<使用ASP.NET MVC开发企业 ...
- 【AaronYang第一讲】ASP.NET MVC企业开发的基本环境[资源服务器概念]
学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang 茗洋 EasyUI1.3.4 ASP.NET MVC 3 本篇博客地址:http://ww ...
- 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino
大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
- ASP.NET MVC 视图(五)
ASP.NET MVC 视图(五) 前言 上篇讲解了视图中的分段概念.和分部视图的使用,本篇将会对Razor的基础语法简洁的说明一下,前面的很多篇幅中都有涉及到视图的调用,其中用了很多视图辅助器,也就 ...
- ASP.NET MVC 视图(四)
ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到, ...
- ASP.NET MVC Model元数据(一)
ASP.NET MVC Model元数据(一) 前言 在我初学的时候对Model元数据的概念很模糊,或者说是在大脑中没有它的一个模型,作为小白的我去看网上的一些文章还是两眼一黑啥都看不明白,然后我想退 ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总
MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...
- ASP.NET MVC企业级实战目录
电子书样稿 (关注最新进度,请加QQ群:161436236) ASP.NET MVC企业实战第1章 MVC开发前奏.pdf ASP.NET MVC企业实战第10章 站内搜索.pdf 已经好长一段时间没 ...
随机推荐
- mybatis的简单使用
使用mybatis数据库时,需要添加一下jar包: asm-3.3.1.jarcglib-2.2.2.jarjavassist-3.17.1-GA.jarlog4j-1.2.17.jarmybatis ...
- pd的django To do list教程-----(2)models模型的建立
1:在models.py中建表 from django.db import models class Tcontent(models.Model): content = models.CharFiel ...
- windows internal读书笔记
程序:指一个静态的指令序列,而进程则是一个容器,其中包含了当执行一个程序特定实例时所用到的各种资源.
- sqlite3---终端操作
进入沙盒路径 创建stu.sql数据库 sqlite3 stu.sql 创建表 create table if not exists Student (id integer primary key a ...
- JS正则验证格式
function test() { var temp = document.getElementById("text1"); //对电子邮件的验证 var myreg = /^([ ...
- JQ 遍历节点
.children() : 取得匹配元素的子元素集合 .next() :取得匹配元素后面紧邻的同辈元素 .prev() :取得匹配元素前面紧邻的同辈元素 .siblings() :取得匹配元素前.后的 ...
- java开发中的23中设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- C++中多重继承构造函数执行顺序
代码1: #include <cstdio> #include <iostream> using namespace std; class A{ public: A(){ co ...
- 解决SurfaceView设置透明造成覆盖其他组件的替代方案
之前在项目里面绘制摇杆圆盘使用SurfaceView来实现,同时设置SurfaceView透明,但是这样会造成SurfaceView的组件会覆盖其他的组件,一般情况没有关系,而不一般的情况就是有类似上 ...
- Guava API学习之Optional 判断对象是否为null
java.lang.NullPointerException,只要敢自称Java程序员,那对这个异常就再熟悉不过了.为了防止抛出这个异常,我们经常会写出这样的代码: Person person = p ...